Patentable/Patents/US-9665664
US-9665664

DFA-NFA hybrid

PublishedMay 30, 2017
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

Disclosed is a hybrid architecture combining DFA and NFA based engines. The DFA engine and NFA engine scan the same input stream. The DFA engine may be a multi-threaded engine. Fragments of rules are assigned to the DFA engine and portions of rules are assigned to the NFA engine. Fragments matched by the DFA engine may be sorted by a sorter into NFA launch positions before activating NFA states. A dynamically reconfigurable NFA cell array may be used. An NFA state signaled by a DFA fragment match is loaded into NFA cell(s). The DFA fragments may be adjacent to start state positions or following high-branching NFA states. Look-around assertions may be used by the DFA to signal to the NFA to either prevent or permit continued matching of a rule.

Patent Claims
20 claims

Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.

Claim 1

Original Legal Text

1. A hybrid of a Non-deterministic Finite Automata (NFA) and a Deterministic Finite Automata (DFA) comprising: a DFA engine that, receives input symbols from an input stream to match predetermined rule fragments suitable for processing by the DFA engine, wherein the predetermined rule fragments comprise a filter fragment, and signals a filter event, said filter event comprising one or more references to one or more specific NFA states in an NFA to be activated and one or more launch positions in said input stream, based on the matches of the predetermined rule fragments, and token outputs; and an NFA engine that, receives the filter event from the DFA engine, activates a non-permanent keep-alive spinner start state in the NFA at the received one or more launch positions, matches corresponding tail portions, and signals output tokens, wherein the DFA engine and the NFA engine are configured to process the input stream simultaneously, wherein each launch position comprises a specified position of the input stream different from a present position of the input stream at the NFA engine, wherein the DFA engine is a first hardware engine, and wherein the NFA engine is a second hardware engine.

Plain English Translation

A hybrid system combines a DFA (Deterministic Finite Automata) engine and an NFA (Non-deterministic Finite Automata) engine to process an input stream simultaneously. The DFA engine examines the input stream for predefined "filter" rule fragments that it can efficiently handle. When a match occurs, the DFA engine signals the NFA engine with a "filter event." This event tells the NFA which specific NFA states to activate and where in the input stream ("launch positions") to begin processing these states. The NFA engine then activates these "non-permanent keep-alive spinner start states" at the specified positions, matches remaining parts of rules, and outputs tokens upon successful rule matches. Both engines are hardware-based, and the launch position is a different location on the input stream than the NFA engine's current position.

Claim 2

Original Legal Text

2. The hybrid of claim 1 , wherein the NFA engine is a dynamically configurable cell array.

Plain English Translation

The hybrid system described in the previous claim enhances the NFA engine. Instead of a fixed architecture, the NFA engine uses a dynamically configurable cell array. This allows the NFA engine to adapt its structure on-the-fly, making it more flexible and efficient in processing various patterns triggered by the DFA engine signals.

Claim 3

Original Legal Text

3. The hybrid of claim 1 , further comprising: a launch position sorter that receives entrance events from the DFA engine and sorts the entrance events into launch positions, wherein the NFA engine receives the entrance events from the launch position sorter; and at least one instruction cache is accessible by the DFA engine and the NFA engine; wherein the at least one instruction cache is connected to an instruction memory interface for accessing instructions from an external memory.

Plain English Translation

The hybrid system described previously includes a launch position sorter. This sorter receives "entrance events" (signals) from the DFA engine and organizes them into launch positions for the NFA engine. The NFA engine uses these sorted events. Both the DFA and NFA engines can access at least one instruction cache, which in turn connects to an external memory via an instruction memory interface, allowing both engines to fetch instructions from external memory.

Claim 4

Original Legal Text

4. The hybrid of claim 3 , wherein said DFA engine is a multi-threaded hardware DFA engine.

Plain English Translation

In the hybrid system including a launch position sorter and instruction cache, the DFA engine is a multi-threaded hardware engine. This allows the DFA engine to process multiple input streams or rule fragments concurrently, increasing its overall throughput and ability to quickly identify potential NFA activation points.

Claim 5

Original Legal Text

5. The hybrid of claim 3 , wherein said NFA engine is a dynamically configurable NFA cell array.

Plain English Translation

In the hybrid system including a launch position sorter and instruction cache, the NFA engine is a dynamically configurable NFA cell array. This allows the NFA engine to adapt its structure on-the-fly, making it more flexible and efficient in processing various patterns triggered by the DFA engine signals.

Claim 6

Original Legal Text

6. The hybrid of claim 3 , wherein said NFA engine is a dynamically configurable NFA cell array and said DFA engine is a multi-threaded hardware DFA engine.

Plain English Translation

The hybrid system including a launch position sorter and instruction cache has both a multi-threaded hardware DFA engine AND a dynamically configurable NFA cell array. This combines the high-throughput capabilities of a multi-threaded DFA with the flexibility of a reconfigurable NFA, creating a highly adaptable and efficient hybrid pattern matching system.

Claim 7

Original Legal Text

7. The hybrid of claim 1 , wherein: at least one of said predetermined rule fragments is a look-around fragment.

Plain English Translation

In the hybrid system combining a DFA and NFA engine, at least one of the predetermined rule fragments that the DFA engine looks for is a "look-around fragment." Look-around fragments can check for patterns before or after the main matching pattern without including them in the match itself (e.g., ensuring a pattern is NOT followed by a specific character).

Claim 8

Original Legal Text

8. The hybrid of claim 7 , wherein a match of the look around fragment causes a look around event to be signaled to the NFA engine, and wherein the NFA engine reacts to the signal, said reaction being a response by the NFA engine to block a transition in a corresponding NFA state if a corresponding look around assertion is negative and to allow a transition in a corresponding NFA state if the look around assertion is positive.

Plain English Translation

In the hybrid system using look-around fragments, when the DFA engine matches a look-around fragment, it signals a "look-around event" to the NFA engine. The NFA engine then reacts based on the type of look-around: if it's a negative look-around (e.g., "not followed by"), the NFA blocks a transition in the corresponding NFA state; if it's a positive look-around (e.g., "followed by"), the NFA allows the transition.

Claim 9

Original Legal Text

9. The hybrid of claim 8 , wherein the NFA engine is a dynamically configurable cell array.

Plain English Translation

In the hybrid system that supports look-around assertions and signaling, where the NFA engine reacts by blocking or allowing transitions, the NFA engine is a dynamically configurable cell array. This allows the NFA to dynamically adjust its connections based on the look-around results.

Claim 10

Original Legal Text

10. The hybrid of claim 1 , wherein: said NFA engine is a dynamically configurable NFA cell array; and at least one of said predetermined rule fragment is a fragment which follows a high-branching state in the NFA.

Plain English Translation

In the hybrid system combining a DFA and NFA engine, the NFA engine is a dynamically configurable NFA cell array, and at least one of the rule fragments handled by the DFA engine is a fragment that appears after a "high-branching state" in the NFA. A high-branching state is one with many possible next states. Matching fragments following these states allows the DFA to efficiently guide the NFA engine down the correct path.

Claim 11

Original Legal Text

11. The hybrid of claim 10 , wherein a match of the fragment following a high-branching state causes a dynamic link event to be signaled to the NFA engine, and wherein the NFA engine reacts to the signal, said reaction being a response by the NFA engine to activate a corresponding child state and dynamically linking said child state to a corresponding parent state.

Plain English Translation

In the hybrid system that handles fragments following high-branching states, a match by the DFA engine triggers a "dynamic link event" sent to the NFA engine. The NFA engine responds by activating a corresponding "child state" and dynamically linking this child state to its "parent state". This dynamic linking allows the NFA to explore the correct branch of the pattern efficiently.

Claim 12

Original Legal Text

12. The hybrid of claim 11 , wherein: said child state comprises a reference to the corresponding parent state; and the NFA engine enables a transition from the parent state to the child state at a launch position signaled from the DFA engine.

Plain English Translation

In the hybrid system using dynamic linking, the child state contains a reference to its parent state. The NFA engine enables a transition from the parent state to the child state specifically at the "launch position" signaled by the DFA engine. This ensures the NFA continues processing from the correct point in the input stream.

Claim 13

Original Legal Text

13. A method of matching a rule to symbols from an input stream, said method comprising: matching symbols from the input stream to at least one fragment of the rule in a Deterministic Finite Automata (DFA) engine, wherein the at least one fragment comprises a filter fragment; signaling a Non-deterministic Finite Automata (NFA) engine with a filter event, said filter event comprising one or more launch positions, based on the matching of the filter fragment; activating a non-permanent keep-alive spinner start state in the NFA at the one or more launch positions; matching symbols from the input stream to a corresponding other portion of the rule in the NFA engine; and outputting a match token, wherein the DFA engine and the NFA engine are configured to process the input stream simultaneously, wherein each launch position comprises a specified position of the input stream different from a present position of the input stream at the NFA engine.

Plain English Translation

A method for matching rules to an input stream uses a DFA engine and an NFA engine simultaneously. The DFA engine matches parts ("filter fragment") of a rule. When the DFA matches, it signals the NFA with a "filter event" including one or more "launch positions." The NFA engine activates a "non-permanent keep-alive spinner start state" at those positions in the input stream and then continues matching the remaining rule portions. A match token is output upon successful rule completion. The launch position is different from the NFA's current position on the input stream.

Claim 14

Original Legal Text

14. The method of claim 13 , wherein said at least one fragment is an entrance fragment.

Plain English Translation

In the method using DFA and NFA engines, the at least one fragment matched by the DFA is an "entrance fragment." This means the fragment represents an entry point into a specific portion of the rule.

Claim 15

Original Legal Text

15. The method of claim 13 , wherein said at least one fragment is a look-around fragment.

Plain English Translation

In the method using DFA and NFA engines, the at least one fragment matched by the DFA is a "look-around fragment." This fragment allows the DFA to check for patterns before or after the main matching pattern without including them in the match itself.

Claim 16

Original Legal Text

16. The method of claim 15 , said method further comprising: signaling the NFA engine with look-around events; if the look-around event results from a negative look-around assertion, blocking a transition in a corresponding NFA state; and if the look-around event results from a positive look-around assertion, allowing a transition in a corresponding NFA state.

Plain English Translation

The method using look-around fragments involves the DFA engine signaling the NFA engine with "look-around events." If the event is from a negative look-around (e.g., "not followed by"), the NFA blocks a state transition. If it's from a positive look-around (e.g., "followed by"), the NFA allows the transition.

Claim 17

Original Legal Text

17. The method of claim 13 , wherein said at least one fragment is a dynamic-link fragment.

Plain English Translation

In the method using DFA and NFA engines, the at least one fragment matched by the DFA is a "dynamic-link fragment." Matching this fragment indicates that the NFA engine should dynamically connect a child state to a parent state to continue pattern matching.

Claim 18

Original Legal Text

18. The method of claim 17 , wherein said NFA engine is a dynamically reconfigurable NFA cell array, said method further comprising: signaling the NFA engine with a dynamic-link event, said dynamic-link comprising a launch position; activating a corresponding child state, said child state comprising a reference to a corresponding parent state, and dynamically linking said child state to the corresponding parent state; and enabling a transition from the corresponding parent state to the child state at the launch position.

Plain English Translation

The method using a "dynamic-link" fragment with a dynamically reconfigurable NFA cell array involves the DFA signaling the NFA with a "dynamic-link event", including a launch position. The NFA activates a "child state" which references a "parent state," and then dynamically links the child state to the parent. A transition from parent to child is enabled specifically at the launch position provided.

Claim 19

Original Legal Text

19. The method of claim 13 , said method further comprising: after matching a fragment in the DFA engine, signaling a match event, said event comprising a launch position, to the NFA engine; and activating an NFA state at said launch position.

Plain English Translation

The method combines DFA and NFA processing. After the DFA engine matches a fragment, it sends a "match event," including a launch position, to the NFA engine. The NFA then activates a specific NFA state at that indicated launch position to continue rule matching.

Claim 20

Original Legal Text

20. A method of matching, within a hybrid engine, symbols in an input stream to a rule, said hybrid engine comprising a DFA engine and an NFA engine, said method comprising: compiling the rule with a hybrid compiler into a set of instructions for use within the hybrid engine wherein the compiler apportions into at least one fragment, said at least one fragment being suited to processing in a DFA engine, wherein the at least one fragment comprises a filter fragment; assigning at least one of the fragments suited to DFA processing including the filter fragment to the DFA engine; assigning at least a portion of the rule to the NFA engine; matching the filter fragment assigned to the DFA engine to symbols from the input stream; signaling a filter event to the NFA engine, said filter event comprising one or more references to one or more specific NFA states in an NFA to be activated and one or more launch positions in said input stream; activating a non-permanent keep-alive spinner start state in the NFA at the indicated launch position; matching at least one portion of the rule in the NFA engine with symbols from the input stream in the NFA engine; and outputting tokens based on successful matches, wherein the DFA engine and the NFA engine are configured to process the input stream simultaneously, wherein each launch position comprises a specified position of the input stream different from a present position of the input stream at the NFA engine.

Plain English Translation

A method matches an input stream to rules using a hybrid DFA/NFA engine. A "hybrid compiler" compiles the rule into instructions, assigning at least one "filter" fragment, suited to DFA processing, to the DFA engine. The remaining portion of the rule is assigned to the NFA engine. The DFA matches the "filter fragment." Upon a match, the DFA signals the NFA with a "filter event" containing launch positions and the specific NFA states to activate. The NFA activates a "non-permanent keep-alive spinner start state" at the launch position, then continues matching its portion of the rule, outputting tokens on success. The DFA and NFA process the input stream simultaneously, and the launch position is different from the NFA's current input stream position.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

November 26, 2012

Publication Date

May 30, 2017

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, FAQs, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “DFA-NFA hybrid” (US-9665664). https://patentable.app/patents/US-9665664

© 2026 Nomic Interactive Technology LLC. Machine-readable context available at /api/llm-context/US-9665664. See llms.txt for full attribution policy.