WO2012133976A1 - Method, server, terminal apparatus, and computer-readable recording medium for integrating plurality of nondeterministic finite automata for searching by simultaneously using plurality of regular expressions - Google Patents
Method, server, terminal apparatus, and computer-readable recording medium for integrating plurality of nondeterministic finite automata for searching by simultaneously using plurality of regular expressions Download PDFInfo
- Publication number
- WO2012133976A1 WO2012133976A1 PCT/KR2011/002742 KR2011002742W WO2012133976A1 WO 2012133976 A1 WO2012133976 A1 WO 2012133976A1 KR 2011002742 W KR2011002742 W KR 2011002742W WO 2012133976 A1 WO2012133976 A1 WO 2012133976A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- state
- transitions
- finite automata
- deterministic finite
- route
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Definitions
- the present invention relates to a method for merging a plurality of nondeterministic finite automata (NFA) to retrieve a string using a plurality of regular expressions simultaneously, a server, a terminal device and a computer readable recording medium.
- NFA nondeterministic finite automata
- the present invention converts a plurality of regular expressions into non-deterministic finite automata, respectively, and merges a plurality of non-deterministic finite automata using a state-covalent merge or transition-covalent merge scheme.
- a method, a server, a terminal device, and a computer readable recording medium for reducing and further improving the speed of retrieval.
- Regular expression is a formal language used to express a set of strings with specific rules. Also known as regular expressions, regular expressions are used to express strings that you want to find when comparing or searching strings in computing devices such as computers. Used. According to formal language theory, which is a field of computer science dealing with regular expressions, regular expressions are based on ⁇ , meaning a string with no content, and a single-character regular expression (for example, a, b, c, etc.) You can represent strings of various patterns by combining basic regular expressions using operators such as pasting (abc, bbbb, baba, etc.), selection (ab
- PCRE is implemented according to the method used in Perl, a computer programming language. These include Perl Compatible Regular Expressions and POSIX regular expressions defined in the standard for Unix-like computer operating systems.
- NFA Nondeterministic Finite Automata
- This conventional technique has the advantage of making a plurality of regular expressions into one unified regular expression by using only a relatively small amount of memory, but is subject to investigation in checking a particular sequence of characters in a string to be searched. There is a problem that the search time is increased because the state (that is, the active state) to be increased.
- DFA Deterministic Finite Automata
- the object of the present invention is to solve all the above-mentioned problems.
- Another object of the present invention is to reduce the number of active states of the merged non-deterministic finite automata by comparing the states of the non-deterministic finite automata that are the subject of merging and combining the states common to each other in one state.
- the present invention also aims to reduce the number of active states of the merged non-deterministic finite automata by comparing the transitions of the non-deterministic finite automata subjects to be merged and adding the common transition into one transition. do.
- a method of merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously comprising: (a) first and Obtaining first and second non-deterministic finite automata respectively corresponding to a second regular expression, (b) allowing the first and second non-deterministic finite automata share a start state and an end state, and wherein the first ratio Whether a first set of transitions consisting of a transition for moving said start state to state i in a deterministic finite automata and a second set of transitions consisting of a transition for moving said start state to state j in said second non-deterministic finite automata are equal to each other Determining whether the first transition set and the second transition set are the same; A step of generating a state k to merge the first and second non-deterministic finite automata - a method is provided that includes - the state k is replacing the state i and j.
- a method of merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously comprising: (a) first and Obtaining first and second non-deterministic finite automata respectively corresponding to a second regular expression, (b) allowing the first and second non-deterministic finite automata share a start state and an end state, and wherein the first ratio Is common between a first set of transitions that transition the start state to state i in a deterministic finite automata and a second set of transitions that transition the start state to state j in the second non-deterministic finite automata Determining whether at least one transition exists, and (c) the common between the first set of transitions and the second set of transitions.
- NFA Nondeterministic Finite Automata
- the state k reaching as a result of excluding the common transition from each of the first and second transition sets and moving from the start state by a common transition set consisting only of the common transitions is obtained.
- a server for merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, the first and second An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to a regular expression, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic finite Whether a first set of transitions consisting of transitions for moving said starting state to state i in an automata and a second set of transitions consisting of transitions for moving said starting state to state j in said second non-deterministic finite automata are equal to each other; And if it is determined that the first set of transitions and the second set of transitions are the same, the image sums the states i and j into one.
- a NFA merging unit for generating state k and merging the first and second non-deterministic finite automata is provided, wherein state k replaces
- a server for merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, the first and second An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to a regular expression, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic finite A transition that is common between a first set of transitions that transitions the start state to state i in an automata and a second set of transitions that transitions the start state to state j in the second non-deterministic finite automata It is determined whether there is at least one, and the common transition between the first set of transitions and the second set of transitions If it is determined that there is at least one, the state k is reached by excluding the common transition from each of the first and second transition sets and moving from the start state by a common transition set consisting only of the common transitions.
- An NFA merg for a plurality
- a terminal apparatus for merging a plurality of non-deterministic finite automata (NFA) to search a string using a plurality of regular expressions simultaneously comprising: An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to two regular expressions, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic Whether a first set of transitions consisting of a transition for moving said start state to state i in a finite automata and a second set of transitions consisting of a transition for moving said start state to state j in said second non-deterministic finite automata are equal to each other If it is determined that the first set of transitions and the second set of transitions are the same, sum the states i and j into one.
- An NFA merging unit for generating a state k and merging the first and second non-deterministic finite automata is provided, wherein the state k
- a terminal apparatus for merging a plurality of non-deterministic finite automata (NFA) to search a string using a plurality of regular expressions simultaneously, comprising: An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to two regular expressions, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic Transition common between a first set of transitions that transition the start state to state i in a finite automata and a second set of transitions that shift the start state to state j in the second non-deterministic finite automata Is determined whether there is at least one, and the common between the first set of transitions and the second set of transitions If it is determined that there is at least one, generating the state k that is reached as a result of moving from the start state by excluding the common transition from each of the first and second transition sets and by the common transition set consisting only of the common transitions.
- NFA non-deterministic
- a computer readable recording medium for recording another method, a server, a terminal apparatus and a computer program for executing the method for implementing the present invention.
- the memory usage and the search speed can be improved when searching a string using a plurality of regular expressions simultaneously. Can be achieved.
- FIG. 1 is a diagram illustrating an internal configuration of a string search server according to an embodiment of the present invention.
- FIG. 2 is a diagram exemplarily illustrating NFAs corresponding to two regular expressions according to an embodiment of the present invention.
- FIG. 3 is a reference diagram exemplarily illustrating a configuration of simply merging a plurality of NFAs according to the related art.
- FIG. 4 is a diagram exemplarily illustrating a configuration for performing state-sharing merging according to an embodiment of the present invention.
- FIG. 5 is a diagram exemplarily illustrating a configuration for performing a transition-covalent merging according to another embodiment of the present invention.
- a microprocessor is provided with memory means such as a personal computer (for example, a desktop computer, a notebook computer, etc.), a server, a workstation, a PDA, a web pad, a mobile phone, a smartphone, and the like. Therefore, any device having a computing capability can be adopted as the string search server 100 of the present invention.
- FIG. 1 is a diagram illustrating an internal configuration of a string search server according to an embodiment of the present invention.
- a string search server 100 may include an NFA acquisition unit 110 and a non-deterministic finite automata (NFA) merger. 120, a search execution unit 130, a communication unit 140, and a controller 150 may be included.
- the NFA obtaining unit 110, the NFA merging unit 120, the search performing unit 130, the communication unit 140 and the control unit 150 at least some of them are external systems (not shown) Program modules).
- Program modules may be included in the string search server 100 in the form of an operating system, an application module, and other program modules, and may be physically stored on various known storage devices.
- program modules may be stored in a remote storage device that can communicate with the string search server 100.
- program modules include, but are not limited to, routines, subroutines, programs, objects, components, data structures, etc. that perform particular tasks or execute particular abstract data types, described below, in accordance with the present invention.
- the NFA obtaining unit 110 performs a function of obtaining an NFA corresponding to a regular expression to be searched.
- the regular expression to be searched is obtained by the NFA acquiring unit 100 only after being converted into NFA (in this case, the conversion process may be performed by a predetermined regular expression converting unit (not shown).
- the regular expression itself which is a search target, is obtained by the NFA obtaining unit 100 and then converted into NFA by the NFA obtaining unit 100.
- the NFA consists of a state set S, a transition set ⁇ , a transition function ⁇ , a start state s 0 , and an end state set F.
- both the start state and the end state belong to state set S.
- the transition character ⁇ may be ⁇ 0, 1, 2, ..., 255 ⁇ since the input character may correspond to any ASCII code value. Can be.
- regular expression conversion techniques In order to convert regular expressions to NFA, some regular expression conversion techniques are required, such as "Regular expressions into finite automata" by A. Bruggemann-Klein and published in 1993 in Theoretical Computer Science. May be referred to (the content of the paper should be considered to be incorporated in its entirety).
- This paper describes a method for converting regular expressions into Glushkov automata, which is a relatively simple form of automata.
- the regular expression conversion technique applicable to the present invention is not limited to the method described in the above paper, and various modifications may be applied to implement the present invention.
- the regular expression converting unit 110 may convert the regular expression into other forms such as Thompson automata, follow automata, and Antimirov automata. have.
- the present invention will be described on the basis of the Gluikov automata in order to maintain the consistency of the detailed description of the invention.
- FIG. 2 is a diagram exemplarily illustrating NFAs corresponding to two regular expressions according to an embodiment of the present invention.
- the first and second regular expressions to be converted are "([ab] ⁇ 3 ⁇
- dd) a" is either three consecutive characters (that is, represented by ⁇ 3 ⁇ ) is either one of a and b ([ab]) or continuous Both characters are d, followed by a string
- ddd" is the continuation of the first character of either b or c, followed by Refers to a string in which one or two characters are a or all three consecutive characters are d.
- the first and second regular expressions may be converted to the first and second NFAs ((a) and (b) of FIG. 2, respectively).
- the circle containing the indicates the state of the NFA, the arrow and the letter together with it indicates the transition ( ⁇ ) to move from one state to another along the arrow when the character is entered, two of the circles containing numbers
- the concentric circles represent the end state, which means that the character string to be searched is found when the end state is reached.
- the NFA merging unit 120 uses a plurality of NFAs generated as a result of converting a plurality of regular expressions to search for a string using a plurality of regular expressions simultaneously. Merge into the integrated NFA.
- the NFA merger 120 may perform a function of reducing the number of active states of the merged NFA by combining the common state or transition between two NFAs to be merged into one. Can be.
- a method of merging NFAs according to the present invention will be described in more detail.
- FIG. 3 is a reference diagram exemplarily illustrating a configuration of simply merging a plurality of NFAs according to the related art.
- the first and second NFAs illustrated in FIG. 2 are merged.
- a start state and an end state of each of the first and second NFAs may be set.
- the first and second NFAs are simply merged.
- This simple merged NFA in the prior art described above, is the case where the first and second regular expressions corresponding to the first and second NFAs are respectively concatenated with the OR operator "
- state 0, 1, 2, 3, 4, and 5 of the simple merged NFA 300 of FIG. 3 are the same as the first NFA of FIG. 2A, and the simple merged NFA of FIG. If only state 0, 6, 7, 4, 8 and 9 of 300 is separated, it can be seen that it is the same as the second NFA of FIG.
- the NFA merging unit 120 compares the states of a plurality of NFAs to be merged, sums the states common to the plurality of NFAs into one state, and the plurality of NFAs are mutually different. State-sharing merging can be performed to enable sharing of common state. Specifically, according to an embodiment of the present invention, the NFA merging unit 120 compares the following states connected to the start states of the plurality of NFAs to be merged, and adds all the states that can be summed, and then connected again. State-sharing merge can be performed by comparing states.
- the NFA merger 120 merges the first and second NFAs such that the first and second NFAs that are the targets of the merge share the start state and the end state.
- this merged NFA it is possible to determine whether the first set of transitions consisting of transitions for moving the start state to state i and the second set of transitions consisting of transitions for moving the start state to state j are the same.
- state k that combines the states i and j into one to generate states i and j Replace with state k and allow the first and second NFAs to share state k.
- the state k generated as described above may be generated so as to be connected to both a state reachable from a state i and a state reachable from a state j.
- the NFA merger 120 moves the third set of transitions and the state k to the state m, which consists of a transition for moving the state k to the state l in the merged non-deterministic finite automata. It is determined whether or not the fourth set of transitions consisting of transitions is equal to each other, and if it is determined that the third set of transitions and the fourth set of transitions are the same, a state n is obtained by adding states l and m to state n and m to state n. And let the first and second NFAs share state n.
- the NFA merger 120 is a first additional route consisting of all additional routes that can reach state i within the first non-deterministic finite automata.
- the first and second non-deterministic finite automata can be merged such that the state k is generated if the second set of additional roots consisting of the set and all additional routes that can reach state j within the second non-deterministic finite automata is the same. .
- the root means a predetermined path specified by all the states and transitions that pass through until reaching state i or j.
- a route for which the starting state reaches state i or j by the first or second set of transitions is referred to as a primary route
- a route that reaches state i or j as a route other than the primary route is called an additional route.
- This name is for convenience of explanation, and it should be noted that a root, which is the default route, may be referred to as an additional route according to an access criterion, and vice versa.
- a route in which state k reaches state l or m by the third or fourth set of transitions is referred to as an additional route other than the default route.
- the NFA merger 120 is a third additional route consisting of all additional routes that can reach state l within the first non-deterministic finite automata.
- State n can be generated if the set and the fourth additional route set, which consists of all additional routes that can reach state m within the second non-deterministic finite automata, are identical.
- FIG. 4 is a diagram exemplarily illustrating a configuration for performing state-sharing merging according to an embodiment of the present invention.
- a first set of transitions consisting of transitions for moving the start state 210 of the first NFA to state 5230 is described. Since the second set of transitions ⁇ d ⁇ consisting of the transitions moving ⁇ d ⁇ and the starting state 215 of the second NFA to state 4 (250) are the same, that is, state 5 230 of the first NFA and Since state 4 (250) of the second NFA is a state that is reached as a result of moving by the input letter d in the state 0 (210, 215), which is a starting state, state 5 (230) of the first NFA and the second NFA State 4 (250) may be referred to as the same state. For reference, when the first and second NFAs of FIG. 3 are simply merged, the state 5 (330) and 8 (350) are the same state. It can be said.
- the NFA merging unit 120 shows a state in which state-sharing merging that combines the states common between the first and second NFAs into one state is performed as described above. . That is, in the state-shared merged NFA 400, by adding the states 5 330 and 8 350 of the simple merged NFA 300 of FIG. 3 into one, leaving only the state 5 460, state 0 ( In operation 410, it may be confirmed that even when the letter d is input, the active state may be maintained as one (that is, state 5 (460)).
- the NFA merger 120 compares the state 3 (480) and the state 9 (490) of the next state after the state 5 (460), and the two states are mutually different. If they are the same state, they can be combined into one state. However, even though state 3 (480) and state 9 (490) are both states that the letter d can be reached twice in succession from state 0, state 3 (480) can be entered even if other strings such as aaa and bab are entered. Since the state can be reached, the state 3 480 and the state 9 490 are not the same state. Thus, state 3 (480) and state 9 (490) cannot be summed into one state.
- the NFA merging unit 120 compares the transitions of a plurality of NFAs to be merged, and adds a common transition between the plurality of NFAs into a single transition to form a plurality of NFAs. Transition-sharing merging may be performed to share a common transition with each other. Specifically, according to another embodiment of the present invention, the NFA merging unit 120 compares all the transitions that can be added by comparing the transitions of moving the start states of the plurality of NFAs to be merged to the next state, and then adds them again. Transition-covalent merging can then be performed by comparing the transitions to move to the connected state.
- the NFA merger 120 merges the first and second NFAs so that the first and second NFAs that are the targets of the merge share the start state and the end state. And at least one transition in common between the first set of transitions consisting of a transition for moving the start state to state i and the second set of transitions for moving the start state to state j within the merged NFA. If it is determined that there is at least one common transition between the first set of transitions and the second set of transitions, it is possible to exclude the common transitions in each of the first and second set of transitions, It is possible to generate a state k that can be moved and reached from the start state by a common set of transitions. Further, according to another embodiment of the present invention, the state k generated as described above is generated to be connected by each corresponding transition with a state that can be reached by moving from state i and a state that can be reached by moving from state j. Can be.
- the NFA merger 120 may include a third set of transitions for moving the state k to the state l and a fourth set of transitions for the state k to the state m in the merged non-deterministic finite automata. If it is determined whether there is at least one common transition between them, and if it is determined that at least one common transition exists between the third set of transitions and the fourth set of transitions, a transition common to each of the third and fourth set of transitions is determined. It is possible to generate a state n that arrives as a result of transitioning from state k by a common set of transitions that exclude only a common transition.
- the NFA merger 120 is a first additional route consisting of all additional routes that can reach state i within the first non-deterministic finite automata. If the second additional route set, which consists of the set and all additional routes that can reach state j within the second non-deterministic finite automata, is equal, exclude state common and create a state k in each of the first and second transition sets. To merge the first and second non-deterministic finite automata.
- a route in which state k reaches state l or m by the third or fourth set of transitions is referred to as an additional route other than the default route.
- the NFA merger 120 is a third additional route consisting of all additional routes that can reach state l within the first non-deterministic finite automata. If the fourth additional route set, which consists of the set and all additional routes that can reach state m within the second non-deterministic finite automata, is equal, then exclude the common transition in each of the third and fourth transition sets and generate state n. Can be.
- FIG. 5 is a diagram exemplarily illustrating a configuration for performing a transition-covalent merging according to another embodiment of the present invention.
- the embodiment of FIG. 5 assumes a case of transition-covalent merging of the first and second NFAs illustrated in FIGS. 2A and 2B, respectively.
- a first set of transitions ⁇ a, b ⁇ and a start state 215 of a second NFA, which are transitions that move the start state 210 of the first NFA to state 1 220, are described.
- the first and second transitions may exclude transition by input letter b and add state 8 570 that can be reached by transition by input letter b. More specifically described as follows.
- State 1 (220) of the 1 NFA and state 1 (240) of the second NFA can be viewed as the same state, that is, that is, from the start state 210 of the first NFA to state 1 (220) This means that the transition by the input letter b and the transition by the input letter b from the start state 215 of the second NFA to the state 1 240 are the same.
- the NFA merger 120 may perform a transition-covalent merge that combines a common transition between the first and second NFAs into one transition as described above. That is, in the transition-covalent merged NFA 500, the transition by the input letter b during the transition from the state 0 410, which is the start state of the state-shared merged NFA 400 of FIG. 4, to the state 1 420, is performed. Deletes and transitions from state 0 (410) to state 6 (440) are deleted by input letter b, while state 0 (410) is a new state that is reached as a result of transition by input letter b.
- the character is any of a, b, and c. Even if it is input, it can be confirmed that the active state can be suppressed to one.
- the search performing unit 130 performs a function of searching for a string using the NFA merged by the NFA merging unit 120.
- the character string "gjekf3jmbabad1f” may be read one by one starting from the state 0 (510) which is a start state. According to this, since the first character is g but there is no transition by the input character g in the state 0 (510), the first character stays in the state 0 and the second character is examined. The second character is j, but in state 0 (510) there is no transition by input character j, so it stays in state 0 and examines the third character.
- the communication unit 140 may perform a function to enable the string search server 100 of the present invention to communicate with an external device.
- the controller 150 performs a function of controlling the flow of data between the NFA obtaining unit 110, the NFA merging unit 120, and the search performing unit 130. That is, the controller 150 controls the flow of data from the outside or between the respective components of the string search server 100, so that the NFA obtaining unit 110, the NFA merging unit 120, the search performing unit 130, And the communication unit 140 to perform a unique function.
- a process of acquiring, merging, and searching for a string of NFAs has been described based on the embodiment performed by the server.
- the configuration of the present invention is not necessarily limited to the above embodiment. Not shown).
- a process of acquiring and / or merging NFAs and searching for a string may be performed by a predetermined application installed in the terminal device.
- Embodiments according to the present invention described above may be implemented in the form of program instructions that may be executed by various computer components, and may be recorded in a computer-readable recording medium.
- the computer-readable recording medium may include program instructions, data files, data structures, etc. alone or in combination.
- Program instructions recorded on the computer-readable recording medium may be those specially designed and configured for the present invention, or may be known and available to those skilled in the computer software arts.
- Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs, DVDs, and magneto-optical media such as floptical disks. media), and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like.
- Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
- the hardware device may be configured to operate as one or more software modules to perform the process according to the invention, and vice versa.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
According to one embodiment of the present invention, provided are a server, a terminal apparatus, a computer-readable recording medium, and a method for integrating a first and a second nondeterministic finite automata, comprising the following steps: (a) acquiring first and second nondeterministic finite automatas; (b) determining whether a first transition set for moving a start state to an i state, within the first nondeterministic finite automata, and a second transition set for moving the start state to a j state within the second nondeterministic finite automata are identical; and (c) integrating the first and second nondeterministic finite automata by generating a state k in which the states i and j are combined in one, when the first transition set and the second transition set are identical.
Description
본 발명은 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다. 보다 상세하게는, 본 발명은, 복수의 정규 표현식을 비결정적 유한 오토마타로 각각 변환하고 상태-공유 병합 방식 또는 천이-공유 병합 방식을 이용하여 복수의 비결정적 유한 오토마타를 병합함으로써 활성 상태의 수를 감소시키고 나아가 검색 속도를 향상시킬 수 있도록 하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.The present invention relates to a method for merging a plurality of nondeterministic finite automata (NFA) to retrieve a string using a plurality of regular expressions simultaneously, a server, a terminal device and a computer readable recording medium. will be. More specifically, the present invention converts a plurality of regular expressions into non-deterministic finite automata, respectively, and merges a plurality of non-deterministic finite automata using a state-covalent merge or transition-covalent merge scheme. A method, a server, a terminal device, and a computer readable recording medium for reducing and further improving the speed of retrieval.
정규 표현식(regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어로서 간단히 정규식이라고도 하는데, 컴퓨터를 비롯한 연산 장치에서 문자열을 비교하거나 검색할 때 찾고자 하는 문자열을 표현하는 용도로 많이 사용된다. 정규 표현식을 다루는 전산학의 분야인 형식 언어 이론에 따르면, 정규 표현식은 아무 내용도 없는 문자열을 의미하는 ε과, 한 문자로만 이루어진 정규 표현식(예를 들면, a, b, c 등)을 기본으로 하고 있으며, 이어 붙이기(abc, bbbb, baba 등), 선택(ab|c, ab|ba 등), 반복(c* 등)과 같은 연산자를 이용하여 기본적인 정규 표현식을 조합함으로써 다양한 패턴의 문자열을 나타낼 수 있다. 또한, 정규 표현식이 너무 길어지거나 복잡해지는 경우가 발생할 수 있기 때문에, 사용상의 편의를 위해 다양한 확장 문법을 덧붙인 형태의 정규 표현식이 소개되기도 하였는데, 컴퓨터 프로그래밍 언어인 펄에서 사용되는 방식에 따라 구현한 PCRE(Perl Compatible Regular Expressions)나 유닉스 계열 컴퓨터 운영체제의 표준에 정의된 POSIX 정규 표현식 등이 이에 속한다.Regular expression is a formal language used to express a set of strings with specific rules. Also known as regular expressions, regular expressions are used to express strings that you want to find when comparing or searching strings in computing devices such as computers. Used. According to formal language theory, which is a field of computer science dealing with regular expressions, regular expressions are based on ε, meaning a string with no content, and a single-character regular expression (for example, a, b, c, etc.) You can represent strings of various patterns by combining basic regular expressions using operators such as pasting (abc, bbbb, baba, etc.), selection (ab | c, ab | ba, etc.), and repetition (c *, etc.). have. In addition, since regular expressions may be too long or complicated, regular expressions with various extended syntaxes have been introduced for ease of use. The PCRE is implemented according to the method used in Perl, a computer programming language. These include Perl Compatible Regular Expressions and POSIX regular expressions defined in the standard for Unix-like computer operating systems.
한편, 검색하고자 하는 정규 표현식이 복수인 경우에는 어떤 방식에 따라 검색을 수행하느냐에 따라 검색 시간과 메모리 사용량이 크게 달라지기 때문에, 복수의 정규 표현식을 이용하여 문자열을 효율적으로 검색하기 위한 방법에 대한 연구가 활발하게 이루어지고 있다.On the other hand, when there are a plurality of regular expressions to be searched, the search time and memory usage vary greatly depending on how the search is performed. Therefore, a method for efficiently searching a string using a plurality of regular expressions is provided. Is being actively done.
먼저, 복수의 정규 표현식을 이용하여 문자열 검색을 수행하는 종래 기술의 일 예로서 순차적 검색 방법이 소개된 바 있는데, 이는 주어진 복수의 정규 표현식을 하나씩 순차적으로 선택하여 검색해 보는 단순한 방법이며, 각 정규 표현식을 유한 오토마타(finite automata)로 변환시킨 상태에서 순차적으로 검색을 수행하게 된다. 이러한 종래 기술에 의하면, 별도의 전처리 과정이 요구되지 않기 때문에 수행이 용이하다는 장점은 있지만, 정규 표현식마다 유한 오토마타가 하나씩 생기기 때문에 정규 표현식의 수에 비례하여 문자열을 검색하는 데에 소요되는 시간이 증가하게 되는 문제점이 있다.First, as an example of the prior art of performing a string search using a plurality of regular expressions, a sequential search method has been introduced. This is a simple method of sequentially selecting and searching a plurality of given regular expressions one by one. Is converted to a finite automata and search is performed sequentially. This conventional technique has the advantage of being easy to perform because no separate preprocessing is required, but the time required to search a string in proportion to the number of regular expressions increases because there is one finite automata for each regular expression. There is a problem.
다음으로, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)로의 통합 방법이 소개된 바 있는데, 이는 주어진 복수의 정규 표현식 모두를 선택(OR) 연산자 "|"를 이용하여 연결함으로써 하나의 통합 정규 표현식을 만들고 통합 정규 표현식을 비결정적 유한 오토마타(NFA)로 변환하여 검색을 수행하는 방법이다. 이러한 종래 기술에 의하면, 비교적 적은 양의 메모리만을 사용하여 복수의 정규 표현식을 하나의 통합 정규 표현식으로 만들 수 있다는 장점은 있지만, 검색의 대상이 되는 문자열 내의 특정 순서의 문자를 검사함에 있어서 조사의 대상이 되어야 하는 상태(즉, 활성 상태)가 늘어나게 되어 검색 시간이 많이 소요되는 문제점이 있다.Next, a method of integrating into Nondeterministic Finite Automata (NFA) was introduced, which combines a single unified regular expression by concatenating all of the given multiple regular expressions using the selection (OR) operator "|". Create and convert unified regular expressions into non-deterministic finite automata (NFA). This conventional technique has the advantage of making a plurality of regular expressions into one unified regular expression by using only a relatively small amount of memory, but is subject to investigation in checking a particular sequence of characters in a string to be searched. There is a problem that the search time is increased because the state (that is, the active state) to be increased.
다음으로, 결정적 유한 오토마타(Deterministic Finite Automata: DFA)로의 변환 방법이 소개된 바 있는데, 이는 앞서 설명한 통합 정규 표현식으로부터 변환된 비결정적 유한 오토마타를 결정적 유한 오토마타로 변환하여 활성 상태 수를 항상 한 개로 유지시키는 방법이다. 이러한 종래 기술에 의하면, 활성 상태 수를 한 개로 유지하여 문자열 검색 속도를 향상시키고 입력 문자열 처리 과정을 단순화할 수 있다는 장점은 있지만, 정규 표현식의 수가 증가하면 메모리 사용량이 급격하게 증가하기 때문에 많은 수의 정규 표현식을 처리하기에는 무리가 있다는 한계가 있으며, 또한, 통합된 정규 표현식에 대응하는 비결정적 유한 오토마타를 만든 후에야 결정적 유한 오토마타로의 변환이 가능하기 때문에 결정적 유한 오토마타로의 변환까지 완료된 이후에 새로운 정규 표현식을 추가하기 위해서는 비결정적 유한 오토마타를 만들고 결정적 유한 오토마타로 변환하는 과정을 처음부터 반복해야 하는 문제점이 있다.Next, a method of converting to Deterministic Finite Automata (DFA) was introduced, which converts a non-deterministic finite automata converted from the unified regular expression described above into a deterministic finite automata to keep the number of active states always one. This is how you do it. This prior art has the advantage of keeping the number of active states to one to speed up string searches and simplifying input string processing, but as the number of regular expressions increases, memory usage increases dramatically, There is a limitation in handling regular expressions, and since the conversion to deterministic finite automata is possible only after the nondeterministic finite automata corresponding to the integrated regular expression is made, the conversion to deterministic finite automata is completed. To add an expression, there is a problem of repeating the process of creating a non-deterministic finite automata and converting it to a deterministic finite automata.
따라서, 비결정적 유한 오토마타를 사용하면서도 활성 상태 수를 최소화하여 메모리를 적게 사용하여 빠른 문자열 검색이 가능하도록 하는 기술의 필요성이 대두되고 있다.Therefore, there is a need for a technique for enabling fast string search using a small amount of memory by using a non-deterministic finite automata and minimizing the number of active states.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.The object of the present invention is to solve all the above-mentioned problems.
또한, 본 발명은 병합의 대상이 되는 비결정적 유한 오토마타들의 상태를 비교하여 서로 공통되는 상태를 하나의 상태로 합함으로써 병합된 비결정적 유한 오토마타의 활성 상태의 수를 줄이는 것을 다른 목적으로 한다.Another object of the present invention is to reduce the number of active states of the merged non-deterministic finite automata by comparing the states of the non-deterministic finite automata that are the subject of merging and combining the states common to each other in one state.
또한, 본 발명은 병합의 대상이 되는 비결정적 유한 오토마타들의 천이(transition)를 비교하여 공통되는 천이를 하나의 천이로 합함으로써 병합된 비결정적 유한 오토마타의 활성 상태의 수를 줄이는 것을 또 다른 목적으로 한다.The present invention also aims to reduce the number of active states of the merged non-deterministic finite automata by comparing the transitions of the non-deterministic finite automata subjects to be merged and adding the common transition into one transition. do.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.Representative configuration of the present invention for achieving the above object is as follows.
본 발명의 일 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 방법으로서, (a) 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 단계, (b) 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하는 단계, 및 (c) 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 단계 - 상기 상태 k는 상기 상태 i 및 j를 대체함 - 를 포함하는 방법이 제공된다.According to one aspect of the present invention, a method of merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, comprising: (a) first and Obtaining first and second non-deterministic finite automata respectively corresponding to a second regular expression, (b) allowing the first and second non-deterministic finite automata share a start state and an end state, and wherein the first ratio Whether a first set of transitions consisting of a transition for moving said start state to state i in a deterministic finite automata and a second set of transitions consisting of a transition for moving said start state to state j in said second non-deterministic finite automata are equal to each other Determining whether the first transition set and the second transition set are the same; A step of generating a state k to merge the first and second non-deterministic finite automata - a method is provided that includes - the state k is replacing the state i and j.
본 발명의 다른 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 방법으로서, (a) 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 단계, (b) 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및 (c) 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 단계 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 방법이 제공된다.According to another aspect of the present invention, a method of merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, comprising: (a) first and Obtaining first and second non-deterministic finite automata respectively corresponding to a second regular expression, (b) allowing the first and second non-deterministic finite automata share a start state and an end state, and wherein the first ratio Is common between a first set of transitions that transition the start state to state i in a deterministic finite automata and a second set of transitions that transition the start state to state j in the second non-deterministic finite automata Determining whether at least one transition exists, and (c) the common between the first set of transitions and the second set of transitions. If it is determined that there is at least one transition, the state k reaching as a result of excluding the common transition from each of the first and second transition sets and moving from the start state by a common transition set consisting only of the common transitions is obtained. Generating and merging the first and second non-deterministic finite automata, wherein the state k is newly added within the merged non-deterministic finite automata.
본 발명의 또 다른 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 서버로서, 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 상태 i 및 j를 대체함 - 를 포함하는 서버가 제공된다.According to another aspect of the invention, a server for merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, the first and second An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to a regular expression, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic finite Whether a first set of transitions consisting of transitions for moving said starting state to state i in an automata and a second set of transitions consisting of transitions for moving said starting state to state j in said second non-deterministic finite automata are equal to each other; And if it is determined that the first set of transitions and the second set of transitions are the same, the image sums the states i and j into one. A NFA merging unit for generating state k and merging the first and second non-deterministic finite automata is provided, wherein state k replaces states i and j.
본 발명의 또 다른 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 서버로서, 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 서버가 제공된다.According to another aspect of the invention, a server for merging a plurality of Nondeterministic Finite Automata (NFA) to search a string using a plurality of regular expressions simultaneously, the first and second An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to a regular expression, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic finite A transition that is common between a first set of transitions that transitions the start state to state i in an automata and a second set of transitions that transitions the start state to state j in the second non-deterministic finite automata It is determined whether there is at least one, and the common transition between the first set of transitions and the second set of transitions If it is determined that there is at least one, the state k is reached by excluding the common transition from each of the first and second transition sets and moving from the start state by a common transition set consisting only of the common transitions. An NFA merging unit for merging the first and second non-deterministic finite automata is provided, wherein the state k is newly added in the merged non-deterministic finite automata.
본 발명의 또 다른 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 단말 장치로서, 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 상태 i 및 j를 대체함 - 를 포함하는 단말 장치가 제공된다.According to another aspect of the present invention, a terminal apparatus for merging a plurality of non-deterministic finite automata (NFA) to search a string using a plurality of regular expressions simultaneously, comprising: An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to two regular expressions, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic Whether a first set of transitions consisting of a transition for moving said start state to state i in a finite automata and a second set of transitions consisting of a transition for moving said start state to state j in said second non-deterministic finite automata are equal to each other If it is determined that the first set of transitions and the second set of transitions are the same, sum the states i and j into one. An NFA merging unit for generating a state k and merging the first and second non-deterministic finite automata is provided, wherein the state k replaces the states i and j.
본 발명의 또 다른 태양에 따르면, 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 단말 장치로서, 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 단말 장치가 제공된다.According to another aspect of the present invention, a terminal apparatus for merging a plurality of non-deterministic finite automata (NFA) to search a string using a plurality of regular expressions simultaneously, comprising: An NFA obtainer for acquiring first and second non-deterministic finite automata corresponding to two regular expressions, and allowing the first and second non-deterministic finite automata to share a start state and an end state, and wherein the first non-deterministic Transition common between a first set of transitions that transition the start state to state i in a finite automata and a second set of transitions that shift the start state to state j in the second non-deterministic finite automata Is determined whether there is at least one, and the common between the first set of transitions and the second set of transitions If it is determined that there is at least one, generating the state k that is reached as a result of moving from the start state by excluding the common transition from each of the first and second transition sets and by the common transition set consisting only of the common transitions. NFA merging unit for merging the first and second non-deterministic finite automata, wherein the state k is newly added in the merged non-deterministic finite automata.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 서버, 단말 장치 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.In addition, there is further provided a computer readable recording medium for recording another method, a server, a terminal apparatus and a computer program for executing the method for implementing the present invention.
본 발명에 의하면, 복수의 비결정적 유한 오토마타를 병합함에 있어서 활성 상태의 수를 줄일 수 있으므로, 복수의 정규 표현식을 동시에 사용하여 문자열을 검색할 때에 메모리 사용량을 줄이고 검색 속도를 향상시킬 수 있게 되는 효과를 달성할 수 있다.According to the present invention, since the number of active states can be reduced in merging a plurality of non-deterministic finite automata, the memory usage and the search speed can be improved when searching a string using a plurality of regular expressions simultaneously. Can be achieved.
도 1은 본 발명의 일 실시예에 따른 문자열 검색 서버의 내부 구성을 예시적으로 나타내는 도면이다.1 is a diagram illustrating an internal configuration of a string search server according to an embodiment of the present invention.
도 2는 본 발명의 일 실시예에 따라 두 개의 정규 표현식에 각각 대응되는 NFA를 예시적으로 나타내는 도면이다.FIG. 2 is a diagram exemplarily illustrating NFAs corresponding to two regular expressions according to an embodiment of the present invention.
도 3은 종래 기술에 따라 복수의 NFA를 단순 병합하는 구성을 예시적으로 나타내는 참고 도면이다.3 is a reference diagram exemplarily illustrating a configuration of simply merging a plurality of NFAs according to the related art.
도 4는 본 발명의 일 실시예에 따라 상태-공유 병합을 수행하는 구성을 예시적으로 나타내는 도면이다.4 is a diagram exemplarily illustrating a configuration for performing state-sharing merging according to an embodiment of the present invention.
도 5는 본 발명의 다른 실시예에 따라 천이-공유 병합을 수행하는 구성을 예시적으로 나타내는 도면이다.5 is a diagram exemplarily illustrating a configuration for performing a transition-covalent merging according to another embodiment of the present invention.
[부호의 설명][Description of the code]
100: 문자열 검색 서버100: string search server
110: NFA 획득부110: NFA Acquisition
120: NFA 병합부120: NFA merger
130: 검색 수행부130: search performer
140: 통신부140: communication unit
150: 제어부150: control unit
300: 단순 병합된 NFA300: Simple Merged NFA
400: 상태-공유 병합된 NFA400: State-Shared Merged NFA
500: 천이-공유 병합된 NFA500: Transition-Shared Merged NFA
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.DETAILED DESCRIPTION The following detailed description of the invention refers to the accompanying drawings that show, by way of illustration, specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. It should be understood that the various embodiments of the present invention are different but need not be mutually exclusive. For example, certain shapes, structures, and characteristics described herein may be embodied in other embodiments without departing from the spirit and scope of the invention with respect to one embodiment. In addition, it is to be understood that the location or arrangement of individual components within each disclosed embodiment may be changed without departing from the spirit and scope of the invention. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention, if properly described, is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled. Like reference numerals in the drawings refer to the same or similar functions throughout the several aspects.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily implement the present invention.
문자열 검색 서버의 구성Configure String Search Server
이하에서는, 본 발명의 구현을 위하여 중요한 기능을 수행하는 문자열 검색 서버의 내부 구성 및 각 구성요소의 기능에 대하여 살펴보기로 한다.Hereinafter, the internal structure of the string search server performing important functions for the implementation of the present invention and the function of each component will be described.
본 발명의 일 실시예에 따르면, 개인용 컴퓨터(예를 들어, 데스크탑 컴퓨터, 노트북 컴퓨터 등), 서버, 워크스테이션, PDA, 웹 패드, 이동 전화기, 스마트폰 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 장치라면 얼마든지 본 발명의 문자열 검색 서버(100)로서 채택될 수 있다.According to an embodiment of the present invention, a microprocessor is provided with memory means such as a personal computer (for example, a desktop computer, a notebook computer, etc.), a server, a workstation, a PDA, a web pad, a mobile phone, a smartphone, and the like. Therefore, any device having a computing capability can be adopted as the string search server 100 of the present invention.
도 1은 본 발명의 일 실시예에 따른 문자열 검색 서버의 내부 구성을 예시적으로 나타내는 도면이다.1 is a diagram illustrating an internal configuration of a string search server according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 문자열 검색 서버(100)는, NFA 획득부(110), 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA, 이하, "NFA"라고 함) 병합부(120), 검색 수행부(130), 통신부(140) 및 제어부(150)를 포함할 수 있다. 본 발명의 일 실시예에 따르면, NFA 획득부(110), NFA 병합부(120), 검색 수행부(130), 통신부(140) 및 제어부(150)는 그 중 적어도 일부가 외부 시스템(미도시됨)과 통신하는 프로그램 모듈들일 수 있다. 이러한 프로그램 모듈들은 운영 시스템, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 문자열 검색 서버(100)에 포함될 수 있으며, 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈들은 문자열 검색 서버(100)와 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈들은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.Referring to FIG. 1, a string search server 100 according to an embodiment of the present invention may include an NFA acquisition unit 110 and a non-deterministic finite automata (NFA) merger. 120, a search execution unit 130, a communication unit 140, and a controller 150 may be included. According to an embodiment of the present invention, the NFA obtaining unit 110, the NFA merging unit 120, the search performing unit 130, the communication unit 140 and the control unit 150 at least some of them are external systems (not shown) Program modules). Such program modules may be included in the string search server 100 in the form of an operating system, an application module, and other program modules, and may be physically stored on various known storage devices. In addition, such program modules may be stored in a remote storage device that can communicate with the string search server 100. On the other hand, such program modules include, but are not limited to, routines, subroutines, programs, objects, components, data structures, etc. that perform particular tasks or execute particular abstract data types, described below, in accordance with the present invention.
먼저, 본 발명의 일 실시예에 따르면, NFA 획득부(110)는 검색의 대상이 되는 정규 표현식에 대응되는 NFA를 획득하는 기능을 수행한다. 여기서, 검색의 대상이 되는 정규 표현식이 NFA로 변환된 후에야 NFA 획득부(100)에 의해 획득되는 경우도 상정할 수 있고(이러한 경우 변환 과정은 소정의 정규 표현식 변환부(미도시됨)에 의하여 수행될 것이다.), 검색의 대상이 되는 정규 표현식 자체가 NFA 획득부(100)에 의해 획득된 후 NFA 획득부(100)에 의해 NFA로 변환되는 경우도 상정할 수 있을 것이다. 일반적으로, NFA는 상태 집합 S, 천이 집합 Σ, 천이(遷移, transition) 함수 δ, 시작 상태 s0, 종료 상태 집합 F로 구성된다. 여기서, 시작 상태와 종료 상태는 모두 상태 집합 S에 속한다. 또한, 본 발명에서와 같이, 정규 표현식을 이용하여 문자열을 검색하는 경우라면 입력 문자는 어떠한 아스키 코드값에도 해당될 수 있으므로 천이 집합 Σ 는 {0, 1, 2,..., 255}가 될 수 있다.First, according to an embodiment of the present invention, the NFA obtaining unit 110 performs a function of obtaining an NFA corresponding to a regular expression to be searched. Here, it may be assumed that the regular expression to be searched is obtained by the NFA acquiring unit 100 only after being converted into NFA (in this case, the conversion process may be performed by a predetermined regular expression converting unit (not shown). It is also possible to assume that the regular expression itself, which is a search target, is obtained by the NFA obtaining unit 100 and then converted into NFA by the NFA obtaining unit 100. In general, the NFA consists of a state set S, a transition set Σ, a transition function δ, a start state s 0 , and an end state set F. Here, both the start state and the end state belong to state set S. In addition, as in the present invention, if the character string is searched using a regular expression, the transition character Σ may be {0, 1, 2, ..., 255} since the input character may correspond to any ASCII code value. Can be.
정규 표현식을 NFA로 변환하기 위해서는 소정의 정규 표현식 변환 기술이 요구되는데, 이러한 정규 표현식 변환 기술로서, A. Bruggemann-Klein이 저술하고 1993년 "Theoretical Computer Science"라는 저서에 수록된 "Regular expressions into finite automata"이라는 논문을 참조할 수 있을 것이다(상기 논문의 내용은 그 전체가 본 명세서에 병합되어 있는 것으로 고려되어야 한다). 상기 논문에는 정규 표현식을 비교적 단순한 형태의 오토마타인 글루시코프(Glushkov) 오토마타로 변환하는 방법에 대하여 기재되어 있다. 물론, 본 발명에 적용 가능한 정규 표현식 변환 기술이 상기 논문에 기재된 방법에만 한정되는 것은 아니며, 다양한 변형예를 적용하여 본 발명을 구현할 수 있을 것이다. 예를 들면, 본 발명의 일 실시예에 따른 정규 표현식 변환부(110)는 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타, 안티미로프(Antimirov) 오토마타 등의 다른 형태로 정규 표현식을 변환시킬 수도 있다. 다만, 이하에서는, 발명의 상세한 설명의 일관성을 유지하기 위하여 글루시코프 오토마타를 기준으로 하여 본 발명을 설명하기로 한다.In order to convert regular expressions to NFA, some regular expression conversion techniques are required, such as "Regular expressions into finite automata" by A. Bruggemann-Klein and published in 1993 in Theoretical Computer Science. May be referred to (the content of the paper should be considered to be incorporated in its entirety). This paper describes a method for converting regular expressions into Glushkov automata, which is a relatively simple form of automata. Of course, the regular expression conversion technique applicable to the present invention is not limited to the method described in the above paper, and various modifications may be applied to implement the present invention. For example, the regular expression converting unit 110 according to an embodiment of the present invention may convert the regular expression into other forms such as Thompson automata, Follow automata, and Antimirov automata. have. However, hereinafter, the present invention will be described on the basis of the Gluikov automata in order to maintain the consistency of the detailed description of the invention.
도 2는 본 발명의 일 실시예에 따라 두 개의 정규 표현식에 각각 대응되는 NFA를 예시적으로 나타내는 도면이다.FIG. 2 is a diagram exemplarily illustrating NFAs corresponding to two regular expressions according to an embodiment of the present invention.
본 발명의 일 실시예에 따르면, 변환의 대상이 되는 제1 및 제2 정규 표현식은 각각 "([ab]{3}|dd)a" 및 "[bc]aa|ddd"인 것으로 가정한다. 여기서, 제1 정규 표현식인 "([ab]{3}|dd)a"는 연속하는 세 문자(즉, {3}으로 표현됨)가 모두 a 및 b 중의 어느 하나([ab])이거나 연속한 두 문자가 모두 d이고, 그 다음에 오는 문자가 a인 문자열을 의미하고, 제2 정규 표현식인 "[bc]aa|ddd"는 첫 번째 문자가 b 및 c 중 어느 하나이고 그 다음에 오는 연속한 두 문자가 모두 a이거나 연속하는 세 문자가 모두 d인 문자열을 의미한다.According to an embodiment of the present invention, it is assumed that the first and second regular expressions to be converted are "([ab] {3} | dd) a" and "[bc] aa | ddd", respectively. Here, the first regular expression "([ab] {3} | dd) a" is either three consecutive characters (that is, represented by {3}) is either one of a and b ([ab]) or continuous Both characters are d, followed by a string, and the second regular expression, "[bc] aa | ddd", is the continuation of the first character of either b or c, followed by Refers to a string in which one or two characters are a or all three consecutive characters are d.
본 발명의 일 실시예에 따르면, 제1 및 제2 정규 표현식은 각각 제1 및 제2 NFA(각각 도 2의 (a) 및 (b))로 변환될 수 있는데, 도 2를 참조하면, 숫자를 포함하는 원은 NFA의 상태를 나타내고, 화살표와 그에 병기된 문자는 해당 문자가 입력될 경우 화살표를 따라 한 상태에서 다른 상태로 이동하게 되는 천이(遷移)를 나타내며, 숫자를 포함하는 원 중 두 개의 동심원으로 이루어진 것은 종료 상태를 나타내는데, 시작 상태에서부터 출발하여 천이된 결과 종료 상태에 도달하면 검색하고자 하는 문자열을 찾았음을 의미하게 된다.According to an embodiment of the present invention, the first and second regular expressions may be converted to the first and second NFAs ((a) and (b) of FIG. 2, respectively). Referring to FIG. The circle containing the indicates the state of the NFA, the arrow and the letter together with it indicates the transition (이동) to move from one state to another along the arrow when the character is entered, two of the circles containing numbers The concentric circles represent the end state, which means that the character string to be searched is found when the end state is reached.
다음으로, 본 발명의 일 실시예에 따르면, NFA 병합부(120)는, 복수의 정규 표현식을 동시에 사용하여 문자열을 검색하기 위하여, 복수의 정규 표현식을 변환한 결과 생성된 복수의 NFA를 하나의 통합된 NFA로 병합하는 기능을 수행한다. 예를 들어, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 병합의 대상이 되는 두 NFA 사이에 공통되는 상태나 천이를 하나로 합함으로써 병합된 NFA의 활성 상태 수를 줄이는 기능을 수행할 수 있다. 이하에서는, 본 발명에 따라 NFA를 병합하는 방법에 대하여 보다 자세하게 살펴보기로 한다.Next, according to an embodiment of the present invention, the NFA merging unit 120 uses a plurality of NFAs generated as a result of converting a plurality of regular expressions to search for a string using a plurality of regular expressions simultaneously. Merge into the integrated NFA. For example, the NFA merger 120 according to an embodiment of the present invention may perform a function of reducing the number of active states of the merged NFA by combining the common state or transition between two NFAs to be merged into one. Can be. Hereinafter, a method of merging NFAs according to the present invention will be described in more detail.
도 3은 종래 기술에 따라 복수의 NFA를 단순 병합하는 구성을 예시적으로 나타내는 참고 도면이다.3 is a reference diagram exemplarily illustrating a configuration of simply merging a plurality of NFAs according to the related art.
도 3을 참조하면, 도 2에 도시된 제1 및 제2 NFA를 병합하는 경우를 가정할 수 있는데, 이러한 경우 제1 및 제2 NFA 각각의 시작 상태 및 종료 상태를 각각 하나의 시작 상태 및 종료 상태로 합함으로써 제1 및 제2 NFA를 단순 병합하고 있음을 알 수 있다. 이렇게 단순 병합된 NFA는, 앞서 설명한 종래기술에서 제1 및 제2 NFA에 각각 대응되는 제1 및 제2 정규 표현식을 선택(OR) 연산자 "|"로 연결한 다음에 이를 NFA로 변환하는 경우와 동일한 구조의 NFA가 된다. 실제로, 도 3의 단순 병합된 NFA(300)의 상태 0, 1, 2, 3, 4 및 5만을 떼어놓고 보면 도 2의 (a)의 제1 NFA와 동일하고, 도 3의 단순 병합된 NFA(300)의 상태 0, 6, 7, 4, 8 및 9만을 떼어놓고 보면 도 2의 (b)의 제2 NFA와 동일함을 알 수 있다.Referring to FIG. 3, it may be assumed that the first and second NFAs illustrated in FIG. 2 are merged. In this case, a start state and an end state of each of the first and second NFAs may be set. It can be seen that by merging with states, the first and second NFAs are simply merged. This simple merged NFA, in the prior art described above, is the case where the first and second regular expressions corresponding to the first and second NFAs are respectively concatenated with the OR operator "|" and then converted to NFA. It becomes NFA of the same structure. In fact, only state 0, 1, 2, 3, 4, and 5 of the simple merged NFA 300 of FIG. 3 are the same as the first NFA of FIG. 2A, and the simple merged NFA of FIG. If only state 0, 6, 7, 4, 8 and 9 of 300 is separated, it can be seen that it is the same as the second NFA of FIG.
즉, 복수의 NFA를 단순 병합하게 되면, 복수의 정규 표현식을 선택(OR) 연산자 "|"로 연결한 다음 NFA로 변환하는 종래 기술의 경우와 마찬가지로, 검색의 대상이 되는 문자열 내의 특정 순서의 문자를 검사함에 있어서 조사 대상이 되어야 하는 상태, 즉, 활성 상태(active state)의 수가 늘어난다는 문제점이 발생한다. 예를 들어, 도 3의 단순 병합된 NFA(300)의 상태 0(310)에서 문자 d가 입력되면 상태 0(310)에서 상태 5(330) 및 8(350)로 이동할 수 있어 상태 5(330) 및 8(350)이 활성 상태가 될 수 있고, 상태 0(310)에서 문자 b가 입력되면 상태 0(310)에서 상태 1(320) 및 6(340)으로 이동할 수 있어 상태 1(320) 및 6(330)이 활성 상태가 될 수 있다.In other words, simple merging of multiple NFAs results in a particular sequence of characters in the string to be searched, as in the prior art, where multiple regular expressions are concatenated with the OR operator "|" and then converted to NFA. In examining the problem, there is a problem of increasing the number of states to be investigated, that is, active states. For example, if the letter d is input in state 0 310 of the simple merged NFA 300 of FIG. 3, state 5 310 may move from state 0 310 to state 5 330 and 8 350. ) And 8 (350) may be active, and if the letter b is entered in state 0 (310), then state 1 (320) and state (320) may move from state 0 (310) to state 1 (320). And 6 330 may be active.
이와 같이 활성 상태의 수가 복수가 되면 다음 입력 문자를 검사함에 있어서 복수의 활성 상태를 모두 조사해서 그 다음 상태를 결정해야 하기 때문에 결국 검색 속도가 느려지게 되며 활성 상태의 수가 많아질수록 검색 속도는 더욱 더 느려지기 된다. 따라서, NFA를 병합하는 과정에서 활성 상태의 수를 줄일 수 있는 방법이 필요하다.As such, when the number of active states is increased, the search speed is slowed down because the next input character needs to be examined and the next state is determined. It becomes slower. Therefore, there is a need for a method that can reduce the number of active states in the process of merging NFA.
먼저, 본 발명의 일 실시예에 따르면, NFA 병합부(120)는 병합의 대상이 되는 복수의 NFA의 상태를 비교하여 복수의 NFA 사이에 공통되는 상태를 하나의 상태로 합하여 복수의 NFA가 서로 공통되는 상태를 공유할 수 있도록 하는 상태-공유 병합(state-sharing merging)을 수행할 수 있다. 구체적으로, 본 발명의 일 실시예에 따르면, NFA 병합부(120)는 병합의 대상이 되는 복수의 NFA의 시작 상태에 연결된 다음 상태들을 비교하여 합할 수 있는 상태는 모두 합하고, 다시 그 다음에 연결된 상태를 비교하는 방식으로 상태-공유 병합을 수행할 수 있다.First, according to an embodiment of the present invention, the NFA merging unit 120 compares the states of a plurality of NFAs to be merged, sums the states common to the plurality of NFAs into one state, and the plurality of NFAs are mutually different. State-sharing merging can be performed to enable sharing of common state. Specifically, according to an embodiment of the present invention, the NFA merging unit 120 compares the following states connected to the start states of the plurality of NFAs to be merged, and adds all the states that can be summed, and then connected again. State-sharing merge can be performed by comparing states.
보다 구체적으로 설명하면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 병합의 대상이 되는 제1 및 제2 NFA가 시작 상태와 종료 상태를 공유하도록 제1 및 제2 NFA를 병합할 수 있고, 이와 같이 병합된 NFA 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단할 수 있으며, 그 결과 제1 천이 집합과 제2 천이 집합이 동일한 것으로 판단되면, 즉, 상태 i 및 j가 서로 동일한 상태인 것으로 판단되면, 상태 i 및 j를 하나로 합한 소위 상태 k를 생성하여 상태 i 및 j를 상태 k로 대체하고 제1 및 제2 NFA가 상태 k를 공유하도록 할 수 있다. 여기서, 본 발명의 일 실시예에 따르면, 위와 같이 생성된 상태 k는 상태 i로부터 이동하여 도달할 수 있는 상태 및 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 연결되도록 생성될 수 있다.In more detail, the NFA merger 120 according to an embodiment of the present invention merges the first and second NFAs such that the first and second NFAs that are the targets of the merge share the start state and the end state. In this merged NFA, it is possible to determine whether the first set of transitions consisting of transitions for moving the start state to state i and the second set of transitions consisting of transitions for moving the start state to state j are the same. As a result, if it is determined that the first set of transitions and the second set of transitions are the same, that is, it is determined that the states i and j are the same state, so-called state k that combines the states i and j into one to generate states i and j Replace with state k and allow the first and second NFAs to share state k. Here, according to an embodiment of the present invention, the state k generated as described above may be generated so as to be connected to both a state reachable from a state i and a state reachable from a state j.
또한, 본 발명의 일 실시예에 따른 NFA 병합부(120)는, 위와 같이 병합된 비결정적 유한 오토마타 내에서 상태 k를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상태 k를 상태 m로 이동시키는 천이로 이루어진 제4 천이 집합이 서로 동일한지 여부를 판단하고, 제3 천이 집합과 제4 천이 집합이 동일한 것으로 판단되면, 상태 l 및 m를 하나로 합한 상태 n를 생성하여 상태 l 및 m을 상태 n으로 대체하고 제1 및 제2 NFA가 상태 n을 공유하도록 할 수 있다.In addition, the NFA merger 120 according to an embodiment of the present invention moves the third set of transitions and the state k to the state m, which consists of a transition for moving the state k to the state l in the merged non-deterministic finite automata. It is determined whether or not the fourth set of transitions consisting of transitions is equal to each other, and if it is determined that the third set of transitions and the fourth set of transitions are the same, a state n is obtained by adding states l and m to state n and m to state n. And let the first and second NFAs share state n.
또한, 제1 및 제2 비결정적 유한 오토마타에 있어서 제1 또는 제2 천이 집합에 의하여 시작 상태가 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 기본 루트 이외의 추가 루트를 통하여도 상태 i 또는 j에 도달할 수 있다면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 제1 비결정적 유한 오토마타 내에서 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 제2 비결정적 유한 오토마타 내에서 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 상태 k가 생성되도록 하여 제1 및 제2 비결정적 유한 오토마타를 병합할 수 있다.Also, in the first and second non-deterministic finite automata, a route in which the start state reaches state i or j by the first or second set of transitions is referred to as an additional route other than the default route. If the state i or j can be reached, the NFA merger 120 according to an embodiment of the present invention is a first additional route consisting of all additional routes that can reach state i within the first non-deterministic finite automata. The first and second non-deterministic finite automata can be merged such that the state k is generated if the second set of additional roots consisting of the set and all additional routes that can reach state j within the second non-deterministic finite automata is the same. .
여기서, 루트는 상태 i 또는 j에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정되는 소정의 경로를 의미한다. 본 명세서에서는, 제1 또는 제2 천이 집합에 의하여 시작 상태가 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 지칭하고 기본 루트 이외의 루트로서 상태 i 또는 j에 도달하는 루트를 추가 루트라고 지칭하였지만, 이러한 명칭은 설명의 편의를 위한 것으로서 접근 기준에 따라 기본 루트인 루트가 추가 루트로 지칭될 수 있고 반대로 추가 루트인 루트가 기본 루트로 지칭될 수도 있음을 밝혀 둔다.Here, the root means a predetermined path specified by all the states and transitions that pass through until reaching state i or j. In this specification, a route for which the starting state reaches state i or j by the first or second set of transitions is referred to as a primary route, and a route that reaches state i or j as a route other than the primary route is called an additional route. This name is for convenience of explanation, and it should be noted that a root, which is the default route, may be referred to as an additional route according to an access criterion, and vice versa.
마찬가지로, 제1 및 제2 비결정적 유한 오토마타에 있어서 제3 또는 제4 천이 집합에 의하여 상태 k가 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 기본 루트 이외의 추가 루트를 통하여도 상태 l 또는 m에 도달할 수 있다면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 제1 비결정적 유한 오토마타 내에서 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 제2 비결정적 유한 오토마타 내에서 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 상태 n을 생성할 수 있다.Similarly, in a first and second non-deterministic finite automata, a route in which state k reaches state l or m by the third or fourth set of transitions is referred to as an additional route other than the default route. If the state l or m can be reached, then the NFA merger 120 according to an embodiment of the present invention is a third additional route consisting of all additional routes that can reach state l within the first non-deterministic finite automata. State n can be generated if the set and the fourth additional route set, which consists of all additional routes that can reach state m within the second non-deterministic finite automata, are identical.
도 4는 본 발명의 일 실시예에 따라 상태-공유 병합을 수행하는 구성을 예시적으로 나타내는 도면이다. 참고로, 도 4의 실시예에서는 도 2의 (a) 및 (b)에 각각 도시된 제1 및 제2 NFA를 상태-공유 병합하였다.4 is a diagram exemplarily illustrating a configuration for performing state-sharing merging according to an embodiment of the present invention. For reference, in the embodiment of FIG. 4, state-covalent merging of the first and second NFAs shown in FIGS. 2A and 2B, respectively.
먼저, 도 2의 (a) 및 (b)에 각각 도시된 제1 및 제2 NFA를 살펴보면, 제1 NFA의 시작 상태(210)를 상태 5(230)로 이동시키는 천이로 이루어진 제1 천이 집합 {d}와 제2 NFA의 시작 상태(215)를 상태 4(250)로 이동시키는 천이로 이루어진 제2 천이 집합 {d}가 서로 동일하기 때문에, 즉, 제1 NFA의 상태 5(230)와 제2 NFA의 상태 4(250)는 모두 시작 상태인 상태 0(210, 215)에서 입력 문자 d에 의하여 이동한 결과 도달하게 되는 상태이기 때문에, 제1 NFA의 상태 5(230)와 제2 NFA의 상태 4(250)는 동일한 상태라고 할 수 있으며, 참고로 도 3의 제1 및 제2 NFA가 단순 병합된 NFA(300)에서 볼 때에는 상태 5(330) 및 8(350)이 서로 동일한 상태라고 할 수 있다.First, referring to the first and second NFAs shown in FIGS. 2A and 2B, respectively, a first set of transitions consisting of transitions for moving the start state 210 of the first NFA to state 5230 is described. Since the second set of transitions {d} consisting of the transitions moving {d} and the starting state 215 of the second NFA to state 4 (250) are the same, that is, state 5 230 of the first NFA and Since state 4 (250) of the second NFA is a state that is reached as a result of moving by the input letter d in the state 0 (210, 215), which is a starting state, state 5 (230) of the first NFA and the second NFA State 4 (250) may be referred to as the same state. For reference, when the first and second NFAs of FIG. 3 are simply merged, the state 5 (330) and 8 (350) are the same state. It can be said.
도 4를 참조하면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 위와 같이 제1 및 제2 NFA 사이에 공통되는 상태를 하나의 상태로 합하는 상태-공유 병합을 수행한 상태를 나타낸다. 즉, 상태-공유 병합된 NFA(400)에서는, 도 3의 단순 병합된 NFA(300)의 상태 5(330) 및 8(350)를 하나로 합하여 상태 5(460)만을 남겨 둠으로써, 상태 0(410)에서 문자가 d가 입력되는 경우에도 활성 상태가 하나(즉, 상태 5(460))로 유지되도록 할 수 있음을 확인할 수 있다.Referring to FIG. 4, the NFA merging unit 120 according to an embodiment of the present invention shows a state in which state-sharing merging that combines the states common between the first and second NFAs into one state is performed as described above. . That is, in the state-shared merged NFA 400, by adding the states 5 330 and 8 350 of the simple merged NFA 300 of FIG. 3 into one, leaving only the state 5 460, state 0 ( In operation 410, it may be confirmed that even when the letter d is input, the active state may be maintained as one (that is, state 5 (460)).
계속하여 도 4를 참조하면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 상태 5(460)의 다음 상태인 상태 3(480)과 상태 9(490)를 비교하여 두 상태가 서로 동일한 상태라면 하나의 상태로 합할 수 있을 것이다. 하지만, 상태 3(480)과 상태 9(490)가 모두 상태 0에서 두 번 연속으로 문자 d가 입력되어 도달할 수 있는 상태라고 하더라도 상태 3(480)은 aaa, bab 등의 다른 문자열이 입력되더라도 도달할 수 있는 상태이기 때문에, 상태 3(480)과 상태 9(490)는 동일한 상태라고 할 수 없다. 따라서, 상태 3(480)과 상태 9(490)는 하나의 상태로 합할 수 없게 된다.4, the NFA merger 120 according to an embodiment of the present invention compares the state 3 (480) and the state 9 (490) of the next state after the state 5 (460), and the two states are mutually different. If they are the same state, they can be combined into one state. However, even though state 3 (480) and state 9 (490) are both states that the letter d can be reached twice in succession from state 0, state 3 (480) can be entered even if other strings such as aaa and bab are entered. Since the state can be reached, the state 3 480 and the state 9 490 are not the same state. Thus, state 3 (480) and state 9 (490) cannot be summed into one state.
다음으로, 본 발명의 다른 실시예에 따르면, NFA 병합부(120)는 병합의 대상이 되는 복수의 NFA의 천이를 비교하여 복수의 NFA 사이에 공통되는 천이를 하나의 천이로 합하여 복수의 NFA가 서로 공통되는 천이를 공유할 수 있도록 하는 천이-공유 병합(transition-sharing merging)을 수행할 수 있다. 구체적으로, 본 발명의 다른 실시예에 따르면, NFA 병합부(120)는 병합의 대상이 되는 복수의 NFA의 시작 상태를 다음 상태로 이동시키는 천이를 비교하여 합할 수 있는 천이는 모두 합하고, 다시 그 다음에 연결된 상태로 이동시키는 천이를 비교하는 방식으로 천이-공유 병합을 수행할 수 있다.Next, according to another exemplary embodiment of the present invention, the NFA merging unit 120 compares the transitions of a plurality of NFAs to be merged, and adds a common transition between the plurality of NFAs into a single transition to form a plurality of NFAs. Transition-sharing merging may be performed to share a common transition with each other. Specifically, according to another embodiment of the present invention, the NFA merging unit 120 compares all the transitions that can be added by comparing the transitions of moving the start states of the plurality of NFAs to be merged to the next state, and then adds them again. Transition-covalent merging can then be performed by comparing the transitions to move to the connected state.
보다 구체적으로 설명하면, 본 발명의 다른 실시예에 따른 NFA 병합부(120)는 병합의 대상이 되는 제1 및 제2 NFA가 시작 상태와 종료 상태를 공유하도록 제1 및 제2 NFA를 병합할 수 있고, 이와 같이 병합된 NFA 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는 여부를 판단할 수 있으며, 그 결과 제1 천이 집합과 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면 제1 및 제2 천이 집합 각각에서 공통되는 천이를 제외시키고 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 시작 상태로부터 이동되어 도달할 수 있는 상태 k를 생성할 수 있다. 또한, 본 발명의 다른 실시예에 따르면, 위와 같이 생성된 상태 k는 상태 i로부터 이동하여 도달할 수 있는 상태 및 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 각각의 해당 천이에 의해 연결되도록 생성될 수 있다.In more detail, the NFA merger 120 according to another embodiment of the present invention merges the first and second NFAs so that the first and second NFAs that are the targets of the merge share the start state and the end state. And at least one transition in common between the first set of transitions consisting of a transition for moving the start state to state i and the second set of transitions for moving the start state to state j within the merged NFA. If it is determined that there is at least one common transition between the first set of transitions and the second set of transitions, it is possible to exclude the common transitions in each of the first and second set of transitions, It is possible to generate a state k that can be moved and reached from the start state by a common set of transitions. Further, according to another embodiment of the present invention, the state k generated as described above is generated to be connected by each corresponding transition with a state that can be reached by moving from state i and a state that can be reached by moving from state j. Can be.
또한, 본 발명의 다른 실시예에 따른 NFA 병합부(120)는, 병합된 비결정적 유한 오토마타 내에서 상태 k를 상태 l로 이동시키는 제3 천이 집합과 상태 k를 상태 m로 이동시키는 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 제3 천이 집합과 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 제3 및 제4 천이 집합 각각에서 공통되는 천이를 제외시키고 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상태 k로부터 천이한 결과 도달하는 상태 n를 생성할 수 있다.In addition, the NFA merger 120 according to another embodiment of the present invention may include a third set of transitions for moving the state k to the state l and a fourth set of transitions for the state k to the state m in the merged non-deterministic finite automata. If it is determined whether there is at least one common transition between them, and if it is determined that at least one common transition exists between the third set of transitions and the fourth set of transitions, a transition common to each of the third and fourth set of transitions is determined. It is possible to generate a state n that arrives as a result of transitioning from state k by a common set of transitions that exclude only a common transition.
한편, 제1 및 제2 비결정적 유한 오토마타에 있어서 제1 또는 제2 천이 집합에 의하여 시작 상태가 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 기본 루트 이외의 추가 루트를 통하여도 상태 i 또는 j에 도달할 수 있다면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 제1 비결정적 유한 오토마타 내에서 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 제2 비결정적 유한 오토마타 내에서 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 제1 및 제2 천이 집합 각각에서 공통되는 천이를 제외시키고 상태 k가 생성되도록 하여 제1 및 제2 비결정적 유한 오토마타를 병합할 수 있다.On the other hand, in the first and second non-deterministic finite automata, a route in which the start state reaches state i or j by the first or second transition set is referred to as a default route through an additional route other than the default route. If the state i or j can be reached, the NFA merger 120 according to an embodiment of the present invention is a first additional route consisting of all additional routes that can reach state i within the first non-deterministic finite automata. If the second additional route set, which consists of the set and all additional routes that can reach state j within the second non-deterministic finite automata, is equal, exclude state common and create a state k in each of the first and second transition sets. To merge the first and second non-deterministic finite automata.
마찬가지로, 제1 및 제2 비결정적 유한 오토마타에 있어서 제3 또는 제4 천이 집합에 의하여 상태 k가 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 기본 루트 이외의 추가 루트를 통하여도 상태 l 또는 m에 도달할 수 있다면, 본 발명의 일 실시예에 따른 NFA 병합부(120)는 제1 비결정적 유한 오토마타 내에서 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 제2 비결정적 유한 오토마타 내에서 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 제3 및 제4 천이 집합 각각에서 공통되는 천이를 제외시키고 상태 n을 생성할 수 있다.Similarly, in a first and second non-deterministic finite automata, a route in which state k reaches state l or m by the third or fourth set of transitions is referred to as an additional route other than the default route. If the state l or m can be reached, then the NFA merger 120 according to an embodiment of the present invention is a third additional route consisting of all additional routes that can reach state l within the first non-deterministic finite automata. If the fourth additional route set, which consists of the set and all additional routes that can reach state m within the second non-deterministic finite automata, is equal, then exclude the common transition in each of the third and fourth transition sets and generate state n. Can be.
도 5는 본 발명의 다른 실시예에 따라 천이-공유 병합을 수행하는 구성을 예시적으로 나타내는 도면이다. 참고로, 도 5의 실시예에서는 도 2의 (a) 및 (b)에 각각 도시된 제1 및 제2 NFA를 천이-공유 병합하는 경우를 상정하였다.5 is a diagram exemplarily illustrating a configuration for performing a transition-covalent merging according to another embodiment of the present invention. For reference, the embodiment of FIG. 5 assumes a case of transition-covalent merging of the first and second NFAs illustrated in FIGS. 2A and 2B, respectively.
도 2 및 도 5를 참조하면, 제1 NFA의 시작 상태(210)를 상태 1(220)로 이동시키는 천이로 이루어진 제1 천이 집합 {a, b}와 제2 NFA의 시작 상태(215)를 상태 1(240)로 이동시키는 천이로 이루어진 제2 천이 집합 {b, c}는 입력 문자 b에 의한 천이를 공통적으로 포함하고 있기 때문에, 본 발명의 일 실시예에 따르면, 제1 및 제2 천이 집합 각각에서 입력 문자 b에 의한 천이를 제외시키고 입력 문자 b에 의한 천이에 의하여 도달할 수 있는 상태 8(570)을 추가할 수 있다. 보다 구체적으로 설명하면 다음과 같다.2 and 5, a first set of transitions {a, b} and a start state 215 of a second NFA, which are transitions that move the start state 210 of the first NFA to state 1 220, are described. According to an embodiment of the present invention, since the second transition set {b, c} consisting of transitions to state 1 240 includes a transition by the input letter b, the first and second transitions Each of the sets may exclude transition by input letter b and add state 8 570 that can be reached by transition by input letter b. More specifically described as follows.
도 2의 (a)의 제1 NFA의 시작 상태인 상태 0(210)에서 문자 a가 입력되면 상태 1(220)로 이동하지만 도 2의 (b)의 제2 NFA의 시작 상태인 상태 0(215)에서는 문자 a가 입력되어도 해당하는 천이가 없어 상태 0(215)에 그대로 머물게 된다. 또한, 도 2의 (a)의 제1 NFA의 시작 상태인 상태 0(210)에서 문자 c가 입력되어도 해당하는 천이가 없어 상태 0(210)에 그대로 머물게 되지만, 도 2의 (b)의 제2 NFA의 시작 상태인 상태 0(215)에서는 문자 c가 입력되면 상태 1(240)로 이동하게 된다. 이와 같은 이유에서, 제1 NFA의 상태 1(220)과 제2 NFA의 상태 1(240)은 서로 동일한 상태가 아니기 때문에, 도 4의 상태-공유 병합된 NFA에서도 서로 합해지지 못하고 별개의 상태로 존재해야만 한다.When the letter a is input in the state 0 (210) that is the start state of the first NFA of FIG. 2 (a), the state moves to state 1 (220), but state 0 (the state that is the start state of the second NFA of FIG. In 215, even if the letter a is input, there is no corresponding transition, and thus stays in state 0 (215). In addition, even if the letter c is input in the state 0 (210), which is the start state of the first NFA of FIG. 2 (a), there is no corresponding transition, so the state remains as it is in the state 0 (210). 2 In the state 0 (215), which is the start state of the NFA, when the letter c is input, the state moves to the state 1 240. For this reason, since the state 1 (220) of the first NFA and the state 1 (240) of the second NFA are not identical to each other, even in the state-shared merged NFA of FIG. It must exist.
하지만, 제1 및 제2 NFA 모두 시작 상태인 상태 0(210, 215)에서 문자 b가 입력되는 경우에는 상태 1(220, 240)로 이동하게 되는데, 이는 입력 문자가 b인 경우로만 한정하면 제1 NFA의 상태 1(220)과 제2 NFA의 상태 1(240)가 서로 동일한 상태로 볼 수 있음을 의미하며, 다시 말하면, 이는 제1 NFA의 시작 상태(210)에서 상태 1(220)로의 입력 문자 b에 의한 천이와 제2 NFA의 시작 상태(215)에서 상태 1(240)로의 입력 문자 b에 의한 천이가 서로 동일함을 의미한다.However, when the letter b is input in the state 0 (210, 215) in which both the first and second NFAs are started, the state moves to the state 1 (220, 240), which is limited to the case where the input character is b only. State 1 (220) of the 1 NFA and state 1 (240) of the second NFA can be viewed as the same state, that is, that is, from the start state 210 of the first NFA to state 1 (220) This means that the transition by the input letter b and the transition by the input letter b from the start state 215 of the second NFA to the state 1 240 are the same.
도 5를 참조하면, 본 발명의 다른 실시예에 따른 NFA 병합부(120)는 위와 같이 제1 및 제2 NFA 사이에 공통되는 천이를 하나의 천이로 합하는 천이-공유 병합을 수행할 수 있다. 즉, 천이-공유 병합된 NFA(500)에서는, 도 4의 상태-공유 병합된 NFA(400)의 시작 상태인 상태 0(410)에서 상태 1(420)로의 천이 중 입력 문자 b에 의한 천이를 삭제하고 상태 0(410)에서 상태 6(440)으로의 천이 중 입력 문자 b에 의한 천이를 삭제하는 반면에 상태 0(410)이 입력 문자 b에 의해 천이한 결과 도달하게 되는 새로운 상태인 상태 8(570)을 추가함으로써, 도 3의 단순 병합된 NFA(300) 또는 도 4의 상태-공유 병합된 NFA(400)와는 달리, 상태 0(510)에서 문자가 a, b 및 c 중 어느 문자가 입력되는 경우에도 활성 상태가 한 개로 억제될 수 있음을 확인할 수 있다.Referring to FIG. 5, the NFA merger 120 according to another embodiment of the present invention may perform a transition-covalent merge that combines a common transition between the first and second NFAs into one transition as described above. That is, in the transition-covalent merged NFA 500, the transition by the input letter b during the transition from the state 0 410, which is the start state of the state-shared merged NFA 400 of FIG. 4, to the state 1 420, is performed. Deletes and transitions from state 0 (410) to state 6 (440) are deleted by input letter b, while state 0 (410) is a new state that is reached as a result of transition by input letter b. By adding 570, unlike the simple merged NFA 300 of FIG. 3 or the state-covalent merged NFA 400 of FIG. 4, in state 0 510, the character is any of a, b, and c. Even if it is input, it can be confirmed that the active state can be suppressed to one.
한편, 본 발명의 일 실시예에 따르면, 검색 수행부(130)는 NFA 병합부(120)에 의하여 병합된 NFA를 사용하여 문자열에 대한 검색을 수행하는 기능을 수행한다.Meanwhile, according to an embodiment of the present invention, the search performing unit 130 performs a function of searching for a string using the NFA merged by the NFA merging unit 120.
예를 들면, 도 5에 도시된 상태-공유 병합 및 천이-공유 병합이 모두 수행된 NFA를 이용하여 "gjekf3jmbabad1f"라는 문자열에서 원하는 문자열을 검색하는 경우를 가정할 수 있다. 이러한 경우, 시작 상태인 상태 0(510)에서부터 시작하여 "gjekf3jmbabad1f"라는 문자열을 한 문자씩 읽어 들일 수 있다. 이에 따르면, 첫 번째 문자는 g인데 상태 0(510)에서 입력 문자 g에 의한 천이는 존재하지 않으므로 계속 상태 0에 머물게 되고 두 번째 문자를 검사하게 된다. 두 번째 문자는 j인데 상태 0(510)에서 입력 문자 j에 의한 천이는 존재하지 않으므로 계속 상태 0에 머물게 되고 세 번째 문자를 검사하게 된다. 이런 방식으로 상태 0에서 gjekf3jm까지를 검사하고 나면, 그 다음 문자는 b인데 상태 0(510)에 존재하는 입력 문자 b에 의한 천이에 따라 상태 8(570)로 이동하게 되고, 이후에 차례대로 입력되는 문자 a, b 및 a에 의하여 상태 4(즉, 종료 상태)에 도달하게 되는데, 이는 원하는 문자열인 "baba"를 찾은 것을 의미한다. 이에 따르면, 기존의 검색 방법보다 훨씬 적은 활성 상태를 달성함으로써 훨씬 빠른 검색이 가능하게 된다.For example, it may be assumed that a desired string is searched for in a string of "gjekf3jmbabad1f" using an NFA in which both the state-shared merge and the transition-shared merge shown in FIG. 5 are performed. In this case, the character string "gjekf3jmbabad1f" may be read one by one starting from the state 0 (510) which is a start state. According to this, since the first character is g but there is no transition by the input character g in the state 0 (510), the first character stays in the state 0 and the second character is examined. The second character is j, but in state 0 (510) there is no transition by input character j, so it stays in state 0 and examines the third character. After checking state 0 to gjekf3jm in this way, the next character is b, which moves to state 8 (570) following the transition by the input character b that exists in state 0 (510), followed by a sequence of inputs. By the letters a, b, and a, state 4 (ie, the end state) is reached, which means that the desired string "baba" is found. According to this, much faster searching is achieved by achieving much less active state than conventional searching methods.
다음으로, 본 발명의 일 실시예에 따르면, 통신부(140)는 본 발명의 문자열 검색 서버(100)가 외부 장치와 통신할 수 있도록 하는 기능을 수행할 수 있다.Next, according to an embodiment of the present invention, the communication unit 140 may perform a function to enable the string search server 100 of the present invention to communicate with an external device.
마지막으로, 본 발명의 일 실시예에 따른 제어부(150)는 NFA 획득부(110), NFA 병합부(120) 및 검색 수행부(130) 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 제어부(150)는 외부로부터의 또는 문자열 검색 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, NFA 획득부(110), NFA 병합부(120), 검색 수행부(130), 및 통신부(140)에서 각각 고유 기능을 수행하도록 제어한다.Finally, the controller 150 according to an embodiment of the present invention performs a function of controlling the flow of data between the NFA obtaining unit 110, the NFA merging unit 120, and the search performing unit 130. That is, the controller 150 controls the flow of data from the outside or between the respective components of the string search server 100, so that the NFA obtaining unit 110, the NFA merging unit 120, the search performing unit 130, And the communication unit 140 to perform a unique function.
이상에서는 NFA를 획득 및 병합하고 문자열 검색하는 과정이 서버에서 수행되는 실시예를 중심으로 하여 설명하였지만, 본 발명의 구성이 반드시 상기 실시예에 한정되는 것은 아니며 상기 일련의 과정은 사용자의 단말 장치(미도시됨) 상에서도 얼마든지 수행될 수 있을 것이다. 예를 들면, 단말 장치 내에 설치된 소정의 어플리케이션에 의하여 NFA를 획득 및/또는 병합하고 문자열을 검색하는 과정이 수행될 수 있다.In the above, the process of acquiring, merging, and searching for a string of NFAs has been described based on the embodiment performed by the server. However, the configuration of the present invention is not necessarily limited to the above embodiment. Not shown). For example, a process of acquiring and / or merging NFAs and searching for a string may be performed by a predetermined application installed in the terminal device.
이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Embodiments according to the present invention described above may be implemented in the form of program instructions that may be executed by various computer components, and may be recorded in a computer-readable recording medium. The computer-readable recording medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the computer-readable recording medium may be those specially designed and configured for the present invention, or may be known and available to those skilled in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs, DVDs, and magneto-optical media such as floptical disks. media), and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device may be configured to operate as one or more software modules to perform the process according to the invention, and vice versa.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.Although the present invention has been described by specific embodiments such as specific components and the like, but the embodiments and the drawings are provided to assist in a more general understanding of the present invention, the present invention is not limited to the above embodiments. For those skilled in the art, various modifications and variations can be made from these descriptions.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.Accordingly, the spirit of the present invention should not be limited to the above-described embodiments, and all of the equivalents or equivalents of the claims, as well as the appended claims, fall within the scope of the spirit of the present invention. I will say.
Claims (39)
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 방법으로서,A method of merging a plurality of nondeterministic finite automata (NFAs) to search a string using a plurality of regular expressions simultaneously.(a) 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 단계,(a) obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively,(b) 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하는 단계, 및(b) a first set of transitions comprising a transition for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata Determining whether a second set of transitions consisting of transitions for moving the start state to state j in a second non-deterministic finite automata is equal to each other, and(c) 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 단계 - 상기 상태 k는 상기 상태 i 및 j를 대체함 -(c) if it is determined that the first set of transitions and the second set of transitions are the same, generating a state k that combines the states i and j into one and merging the first and second non-deterministic finite automata-the state k Replaces states i and j above −를 포함하는 방법.How to include.
- 제1항에 있어서,The method of claim 1,상기 (c) 단계에서,In the step (c),상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제1 또는 제2 천이 집합에 의하여 상기 시작 상태가 상기 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 i 또는 j에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 i 또는 j에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 상기 상태 k가 생성되도록 하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 방법.In the first and second non-deterministic finite automata, a route in which the starting state reaches the state i or j by the first or second set of transitions is added as the default route when the route is other than the default route. If the state i or j can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state i or j, within the first non-deterministic finite automata When the first additional route set consisting of all additional routes that can reach state i and the second additional route set consisting of all additional routes that can reach state j within the second non-deterministic finite automata are equal Merge the first and second non-deterministic finite automata by causing the state k to be generated.
- 제1항에 있어서,The method of claim 1,상기 (a) 단계 이전에,Before step (a) above,상기 제1 및 제2 정규 표현식을 각각 상기 제1 및 제2 비결정적 유한 오토마타로 변환하는 단계Converting the first and second regular expressions into the first and second non-deterministic finite automata, respectively를 더 포함하는 방법.How to include more.
- 제1항에 있어서,The method of claim 1,상기 비결정적 유한 오토마타는 글루시코프(Glushkov) 오토마타, 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타 및 안티미로프(Antimirov) 오토마타 중 어느 하나인 것을 특징으로 하는 방법.And wherein the non-deterministic finite automata is any one of a Glushkov automata, a Thompson automata, a Follow automata, and an Antimirov automata.
- 제1항에 있어서,The method of claim 1,상기 (c) 단계에서,In the step (c),상기 상태 k는 상기 상태 i로부터 이동하여 도달할 수 있는 상태 및 상기 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 연결되도록 생성되는 것을 특징으로 하는 방법.And the state k is generated to be connected to both a state that can be reached by moving from the state i and a state that can be reached by moving from the state j.
- 제1항에 있어서,The method of claim 1,(d) 상기 병합된 비결정적 유한 오토마타 내에서 상기 상태 k를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 상태 k를 상태 m로 이동시키는 천이로 이루어진 제4 천이 집합이 서로 동일한지 여부를 판단하는 단계, 및(d) whether or not a third set of transitions consisting of transitions for moving said state k to state l and a fourth set of transitions moving said state k to state m are identical in said merged non-deterministic finite automata; Judging, and(e) 상기 제3 천이 집합과 상기 제4 천이 집합이 동일한 것으로 판단되면, 상기 상태 l 및 m를 하나로 합한 상태 n를 생성하는 단계 - 상기 상태 n는 상기 상태 l 및 m를 대체함 - (e) if it is determined that the third set of transitions and the fourth set of transitions are the same, generating a state n that sums the states l and m into one, wherein the state n replaces the states l and m;를 더 포함하는 것을 특징으로 하는 방법.Method further comprising a.
- 제6항에 있어서,The method of claim 6,상기 (e) 단계에서,In the step (e),상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제3 또는 제4 천이 집합에 의하여 상기 상태 k가 상기 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 l 또는 m에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 l 또는 m에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 상기 상태 n가 생성되도록 하는 것을 특징으로 하는 방법.In the first and second non-deterministic finite automata, a route in which the state k reaches the state l or m by the third or fourth set of transitions is added as the default route when the route is other than the default route. If the state l or m can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state l or m, within the first non-deterministic finite automata When the third additional route set consisting of all additional routes that can reach state l and the fourth additional route set consisting of all additional routes that can reach state m within the second non-deterministic finite automata are equal And the state n is generated.
- 제1항에 있어서,The method of claim 1,(f) 상기 병합된 비결정적 유한 오토마타에 제3 비결정적 유한 오토마타를 병합하는 단계(f) merging a third non-deterministic finite automata into the merged non-deterministic finite automata를 더 포함하는 것을 특징으로 하는 방법.Method further comprising a.
- 제1항에 있어서,The method of claim 1,(g) 검색의 대상이 되는 문자열을 상기 병합된 비결정적 유한 오토마타에 순차적으로 입력시켜 상기 병합된 비결정적 유한 오토마타의 상태가 천이될 수 있도록 하고, 상기 병합된 비결정적 유한 오토마타가 종료 상태에 도달하면 상기 검색의 대상이 되는 문자열에 원하는 문자열이 포함되어 있는 것으로 판단하는 단계(g) sequentially inputting a string to be searched into the merged non-deterministic finite automata so that the state of the merged non-deterministic finite automata can transition, and the merged non-deterministic finite automata reaches an end state If it is determined that the desired string is included in the string to be searched를 더 포함하는 것을 특징으로 하는 방법.Method further comprising a.
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 방법으로서,A method of merging a plurality of nondeterministic finite automata (NFAs) to search a string using a plurality of regular expressions simultaneously.(a) 제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 단계,(a) obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively,(b) 상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및(b) a first set of transitions comprising a transition for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata Determining whether there is at least one transition common between a second set of transitions consisting of transitions to move the start state to state j in a second non-deterministic finite automata, and(c) 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 단계 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 -(c) if it is determined that at least one common transition exists between the first set of transitions and the second set of transitions, only the common transition is excluded from each of the first and second set of transitions. Merging the first and second non-deterministic finite automata by generating a state k that arrives as a result of moving from the starting state by a common set of transitions, wherein state k is newly added within the merged non-deterministic finite automata를 포함하는 방법.How to include.
- 제10항에 있어서,The method of claim 10,상기 (c) 단계에서,In the step (c),상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제1 또는 제2 천이 집합에 의하여 상기 시작 상태가 상기 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 i 또는 j에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 i 또는 j에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 상태 k가 생성되도록 하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 방법.In the first and second non-deterministic finite automata, a route in which the starting state reaches the state i or j by the first or second set of transitions is added as the default route when the route is other than the default route. If the state i or j can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state i or j, within the first non-deterministic finite automata When the first additional route set consisting of all additional routes that can reach state i and the second additional route set consisting of all additional routes that can reach state j within the second non-deterministic finite automata are equal The first and second amorphous states are excluded from each of the first and second set of transitions so that the state k is generated. Method of merging enemy finite automata.
- 제10항에 있어서,The method of claim 10,상기 (a) 단계 이전에, Before step (a) above,상기 제1 및 제2 정규 표현식을 각각 상기 제1 및 제2 비결정적 유한 오토마타로 변환하는 단계Converting the first and second regular expressions into the first and second non-deterministic finite automata, respectively를 더 포함하는 방법.How to include more.
- 제10항에 있어서,The method of claim 10,상기 비결정적 유한 오토마타는 글루시코프(Glushkov) 오토마타, 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타 및 안티미로프(Antimirov) 오토마타 중 어느 하나인 것을 특징으로 하는 방법.And wherein the non-deterministic finite automata is any one of a Glushkov automata, a Thompson automata, a Follow automata, and an Antimirov automata.
- 제10항에 있어서,The method of claim 10,상기 (c) 단계에서,In the step (c),상기 상태 k는 상기 상태 i로부터 이동하여 도달할 수 있는 상태 및 상기 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 연결되도록 생성되는 것을 특징으로 하는 방법.And the state k is generated to be connected to both a state that can be reached by moving from the state i and a state that can be reached by moving from the state j.
- 제10항에 있어서,The method of claim 10,(d) 상기 병합된 비결정적 유한 오토마타 내에서 상기 상태 k를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 상태 k를 상태 m로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계,(d) a transition common in the merged non-deterministic finite automata between a third set of transitions comprising the transition of state k to state l and a fourth set of transitions comprising the transition of state k to state m Determining whether at least one exists,(e) 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 및 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 상태 k로부터 천이한 결과 도달하는 상태 n를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 단계 - 상기 상태 n는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 - (e) if it is determined that at least one common transition exists between the third set of transitions and the fourth set of transitions, the common transition is excluded from each of the third and fourth set of transitions and only the common transition is obtained. Merging the first and second non-deterministic finite automata by generating state n reaching a result of the transition from state k by a common set of transitions, wherein state n is newly added within the merged non-deterministic finite automata를 포함하는 방법.How to include.
- 제15항에 있어서,The method of claim 15,상기 (e) 단계에서,In the step (e),상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제3 또는 제4 천이 집합에 의하여 상기 상태 k가 상기 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 l 또는 m에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 l 또는 m에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 상기 제3 및 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 상태 n를 생성하는 것을 특징으로 하는 방법.In the first and second non-deterministic finite automata, a route in which the state k reaches the state l or m by the third or fourth set of transitions is added as the default route when the route is other than the default route. If the state l or m can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state l or m, within the first non-deterministic finite automata When the third additional route set consisting of all additional routes that can reach state l and the fourth additional route set consisting of all additional routes that can reach state m within the second non-deterministic finite automata are equal Generating the state n without excluding the common transition from each of the third and fourth transition sets.
- 제10항에 있어서,The method of claim 10,(f) 상기 병합된 비결정적 유한 오토마타에 제3 비결정적 유한 오토마타를 병합하는 단계(f) merging a third non-deterministic finite automata into the merged non-deterministic finite automata를 더 포함하는 것을 특징으로 하는 방법.Method further comprising a.
- 제10항에 있어서,The method of claim 10,(g) 검색의 대상이 되는 문자열을 상기 병합된 비결정적 유한 오토마타에 순차적으로 입력시켜 상기 병합된 비결정적 유한 오토마타의 상태가 천이될 수 있도록 하고, 상기 병합된 비결정적 유한 오토마타가 종료 상태에 도달하면 상기 검색의 대상이 되는 문자열에 원하는 문자열이 포함되어 있는 것으로 판단하는 단계(g) sequentially inputting a string to be searched into the merged non-deterministic finite automata so that the state of the merged non-deterministic finite automata can transition, and the merged non-deterministic finite automata reaches an end state If it is determined that the desired string is included in the string to be searched를 더 포함하는 것을 특징으로 하는 방법.Method further comprising a.
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 서버로서,A server that merges multiple nondeterministic finite automata (NFAs) to retrieve strings using multiple regular expressions simultaneously.제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및An NFA obtainer for obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively, and상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 상태 i 및 j를 대체함 -A first set of transitions and a second ratio consisting of transitions for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata In a deterministic finite automata, it is determined whether a second set of transitions consisting of transitions for moving the start state to state j is the same, and if it is determined that the first set of transitions and the second set of transitions are the same, the state i and NFA merger for generating state k sum of j into one to merge the first and second non-deterministic finite automata, wherein state k replaces states i and j를 포함하는 서버.Server comprising.
- 제19항에 있어서,The method of claim 19,상기 NFA 병합부는, The NFA merger,상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제1 또는 제2 천이 집합에 의하여 상기 시작 상태가 상기 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 i 또는 j에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 i 또는 j에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 상기 상태 k가 생성되도록 하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 서버.In the first and second non-deterministic finite automata, a route in which the starting state reaches the state i or j by the first or second set of transitions is added as the default route when the route is other than the default route. If the state i or j can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state i or j, within the first non-deterministic finite automata When the first additional route set consisting of all additional routes that can reach state i and the second additional route set consisting of all additional routes that can reach state j within the second non-deterministic finite automata are equal Merge the first and second non-deterministic finite automata by causing the state k to be generated.
- 제19항에 있어서,The method of claim 19,상기 제1 및 제2 정규 표현식을 각각 상기 제1 및 제2 비결정적 유한 오토마타로 변환하는 정규 표현식 변환부A regular expression converter for converting the first and second regular expressions into the first and second non-deterministic finite automata, respectively를 더 포함하는 것을 특징으로 하는 서버.Server further comprising a.
- 제19항에 있어서,The method of claim 19,상기 비결정적 유한 오토마타는 글루시코프(Glushkov) 오토마타, 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타 및 안티미로프(Antimirov) 오토마타 중 어느 하나인 것을 특징으로 하는 서버.Wherein the non-deterministic finite automata is any one of a Glushkov automata, a Thompson automata, a Follow automata, and an Antimirov automata.
- 제19항에 있어서,The method of claim 19,상기 상태 k는 상기 상태 i로부터 이동하여 도달할 수 있는 상태 및 상기 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 연결되도록 생성되는 것을 특징으로 하는 서버.And the state k is generated so as to be connected with both a state reachable from the state i and a state reachable from the state j.
- 제19항에 있어서,The method of claim 19,상기 NFA 병합부는, The NFA merger,상기 병합된 비결정적 유한 오토마타 내에서 상기 상태 k를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 상태 k를 상태 m로 이동시키는 천이로 이루어진 제4 천이 집합이 서로 동일한지 여부를 판단하고, 상기 제3 천이 집합과 상기 제4 천이 집합이 동일한 것으로 판단되면, 상기 상태 l 및 m를 하나로 합한 상태 n를 생성하는 것 - 상기 상태 n는 상기 상태 l 및 m를 대체함 - 을 특징으로 하는 서버.Determining whether a third set of transitions consisting of a transition for moving the state k to state l and a fourth set of transitions for moving the state k to state m are the same in the merged non-deterministic finite automata, And if it is determined that the third set of transitions and the fourth set of transitions are the same, generating a state n that sums the states l and m into one, wherein the state n replaces the states l and m.
- 제24항에 있어서,The method of claim 24,상기 NFA 병합부는, The NFA merger,상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제3 또는 제4 천이 집합에 의하여 상기 상태 k가 상기 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 l 또는 m에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 l 또는 m에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 상기 상태 n가 생성되도록 하는 것을 특징으로 하는 서버.In the first and second non-deterministic finite automata, a route in which the state k reaches the state l or m by the third or fourth set of transitions is added as the default route when the route is other than the default route. If the state l or m can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state l or m, within the first non-deterministic finite automata When the third additional route set consisting of all additional routes that can reach state l and the fourth additional route set consisting of all additional routes that can reach state m within the second non-deterministic finite automata are equal And the state n is generated.
- 제19항에 있어서,The method of claim 19,상기 NFA 병합부는, The NFA merger,상기 병합된 비결정적 유한 오토마타에 제3 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 서버.And merge a third non-deterministic finite automata into the merged non-deterministic finite automata.
- 제19항에 있어서,The method of claim 19,검색의 대상이 되는 문자열을 상기 병합된 비결정적 유한 오토마타에 순차적으로 입력시켜 상기 병합된 비결정적 유한 오토마타의 상태가 천이될 수 있도록 하고, 상기 병합된 비결정적 유한 오토마타가 종료 상태에 도달하면 상기 검색의 대상이 되는 문자열에 원하는 문자열이 포함되어 있는 것으로 판단하는 검색 수행부The character string to be searched is sequentially input to the merged non-deterministic finite automata so that the state of the merged non-deterministic finite automata can transition. Search execution unit that determines that the desired string is included in the target string of the를 더 포함하는 것을 특징으로 하는 서버.Server further comprising a.
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 서버로서,A server that merges multiple nondeterministic finite automata (NFAs) to retrieve strings using multiple regular expressions simultaneously.제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및An NFA obtainer for obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively, and상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 -A first set of transitions and a second ratio consisting of transitions for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata It is determined whether there is at least one common transition between a second set of transitions of transitions that move the start state to state j in a deterministic finite automata, and the common between the first set of transitions and the second set of transitions. If it is determined that at least one transition is present, the state k is reached as a result of moving from the start state by excluding the common transition from each of the first and second transition sets, and by the common transition set consisting only of the common transitions. NFA merger for generating the first and the second non-deterministic finite automata to merge- The state k is newly added in the merged non-deterministic finite automata.를 포함하는 서버.Server comprising.
- 제28항에 있어서,The method of claim 28,상기 NFA 병합부는, The NFA merger,상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제1 또는 제2 천이 집합에 의하여 상기 시작 상태가 상기 상태 i 또는 j에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 i 또는 j에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 i 또는 j에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 i에 도달할 수 있는 모든 추가 루트로 이루어진 제1 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 j에 도달할 수 있는 모든 추가 루트로 이루어진 제2 추가 루트 집합이 동일한 경우에 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 상태 k가 생성되도록 하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 서버.In the first and second non-deterministic finite automata, a route in which the starting state reaches the state i or j by the first or second set of transitions is added as the default route when the route is other than the default route. If the state i or j can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state i or j, within the first non-deterministic finite automata When the first additional route set consisting of all additional routes that can reach state i and the second additional route set consisting of all additional routes that can reach state j within the second non-deterministic finite automata are equal The first and second amorphous states are excluded from each of the first and second set of transitions so that the state k is generated. A server characterized by merging enemy finite automata.
- 제28항에 있어서,The method of claim 28,상기 제1 및 제2 정규 표현식을 각각 상기 제1 및 제2 비결정적 유한 오토마타로 변환하는 정규 표현식 변환부A regular expression converter for converting the first and second regular expressions into the first and second non-deterministic finite automata, respectively를 더 포함하는 것을 특징으로 하는 서버.Server further comprising a.
- 제28항에 있어서,The method of claim 28,상기 비결정적 유한 오토마타는 글루시코프(Glushkov) 오토마타, 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타 및 안티미로프(Antimirov) 오토마타 중 어느 하나인 것을 특징으로 하는 서버.Wherein the non-deterministic finite automata is any one of a Glushkov automata, a Thompson automata, a Follow automata, and an Antimirov automata.
- 제28항에 있어서,The method of claim 28,상기 상태 k는 상기 상태 i로부터 이동하여 도달할 수 있는 상태 및 상기 상태 j로부터 이동하여 도달할 수 있는 상태와 모두 연결되도록 생성되는 것을 특징으로 하는 서버.And the state k is generated so as to be connected with both a state reachable from the state i and a state reachable from the state j.
- 제28항에 있어서,The method of claim 28,상기 NFA 병합부는, The NFA merger,상기 병합된 비결정적 유한 오토마타 내에서 상기 상태 k를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 상태 k를 상태 m로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 및 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 상태 k로부터 천이한 결과 도달하는 상태 n를 생성하는 것 - 상기 상태 n는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 - 을 특징으로 하는 서버.There is at least one transition common in the merged non-deterministic finite automata between a third set of transitions consisting of a transition to move state k to state l and a fourth set of transitions to move state k to state m And if it is determined that at least one common transition exists between the third set of transitions and the fourth set of transitions, the common transition is excluded from each of the third and fourth set of transitions, and the common transition is excluded. Generating a state n arriving as a result of the transition from the state k by a common set of transitions consisting only of the transitions, wherein the state n is newly added in the merged non-deterministic finite automata.
- 제33항에 있어서,The method of claim 33, wherein상기 NFA 병합부는, The NFA merger,상기 제1 및 제2 비결정적 유한 오토마타에 있어서 상기 제3 또는 제4 천이 집합에 의하여 상기 상태 k가 상기 상태 l 또는 m에 도달하는 루트(route)를 기본 루트라고 할 때 상기 기본 루트 이외의 추가 루트를 통하여 상기 상태 l 또는 m에 도달할 수 있다면 - 상기 기본 루트 및 추가 루트는 상태 l 또는 m에 도달할 때까지 거치게 되는 모든 상태 및 천이에 의하여 특정됨 - , 상기 제1 비결정적 유한 오토마타 내에서 상기 상태 l에 도달할 수 있는 모든 추가 루트로 이루어진 제3 추가 루트 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 상태 m에 도달할 수 있는 모든 추가 루트로 이루어진 제4 추가 루트 집합이 동일한 경우에 상기 제3 및 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 상태 n를 생성하는 것을 특징으로 하는 서버.In the first and second non-deterministic finite automata, a route in which the state k reaches the state l or m by the third or fourth set of transitions is added as the default route when the route is other than the default route. If the state l or m can be reached via a route, the primary route and the additional route are specified by all states and transitions that pass through the state l or m, within the first non-deterministic finite automata When the third additional route set consisting of all additional routes that can reach state l and the fourth additional route set consisting of all additional routes that can reach state m within the second non-deterministic finite automata are equal Generate the state n without excluding the common transition from each of the third and fourth transition sets.
- 제28항에 있어서,The method of claim 28,상기 NFA 병합부는, The NFA merger,상기 병합된 비결정적 유한 오토마타에 제3 비결정적 유한 오토마타를 병합하는 것을 특징으로 하는 서버.And merge a third non-deterministic finite automata into the merged non-deterministic finite automata.
- 제28항에 있어서,The method of claim 28,검색의 대상이 되는 문자열을 상기 병합된 비결정적 유한 오토마타에 순차적으로 입력시켜 상기 병합된 비결정적 유한 오토마타의 상태가 천이될 수 있도록 하고, 상기 병합된 비결정적 유한 오토마타가 종료 상태에 도달하면 상기 검색의 대상이 되는 문자열에 원하는 문자열이 포함되어 있는 것으로 판단하는 검색 수행부The character string to be searched is sequentially input to the merged non-deterministic finite automata so that the state of the merged non-deterministic finite automata can be transitioned. Search execution unit that determines that the desired string is included in the target string of the를 더 포함하는 것을 특징으로 하는 서버.Server further comprising a.
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 단말 장치로서,A terminal device for merging a plurality of non-deterministic finite automata (NFAs) to search a string using a plurality of regular expressions simultaneously.제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및An NFA obtainer for obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively, and상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합이 서로 동일한지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합이 동일한 것으로 판단되면, 상기 상태 i 및 j를 하나로 합한 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 상태 i 및 j를 대체함 -A first set of transitions and a second ratio consisting of transitions for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata In a deterministic finite automata, it is determined whether a second set of transitions consisting of transitions for moving the start state to state j is the same, and if it is determined that the first set of transitions and the second set of transitions are the same, the state i and NFA merger for generating state k sum of j into one to merge the first and second non-deterministic finite automata, wherein state k replaces states i and j를 포함하는 단말 장치.Terminal device comprising a.
- 복수의 정규 표현식(regular expression)을 동시에 사용하여 문자열을 검색하기 위해 복수의 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 병합하는 단말 장치로서,A terminal device for merging a plurality of non-deterministic finite automata (NFAs) to search a string using a plurality of regular expressions simultaneously.제1 및 제2 정규 표현식에 각각 대응되는 제1 및 제2 비결정적 유한 오토마타를 획득하는 NFA 획득부, 및An NFA obtainer for obtaining first and second non-deterministic finite automata corresponding to the first and second regular expressions, respectively, and상기 제1 및 제2 비결정적 유한 오토마타가 시작 상태와 종료 상태를 공유하도록 하고, 상기 제1 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 제2 비결정적 유한 오토마타 내에서 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 및 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하여 상기 제1 및 제2 비결정적 유한 오토마타를 병합하는 NFA 병합부 - 상기 상태 k는 상기 병합된 비결정적 유한 오토마타 내에 새로 추가됨 -A first set of transitions and a second ratio consisting of transitions for causing the first and second non-deterministic finite automata to share a start state and an end state, and shifting the start state to state i within the first non-deterministic finite automata It is determined whether there is at least one common transition between a second set of transitions of transitions that move the start state to state j in a deterministic finite automata, and the common between the first set of transitions and the second set of transitions. If it is determined that at least one transition is present, the state k is reached as a result of moving from the start state by excluding the common transition from each of the first and second transition sets, and by the common transition set consisting only of the common transitions. NFA merger for generating the first and the second non-deterministic finite automata to merge- The state k is newly added in the merged non-deterministic finite automata.를 포함하는 단말 장치.Terminal device comprising a.
- 제1항 내지 제18항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a computer program for executing the method according to any one of claims 1 to 18.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20110027780 | 2011-03-28 | ||
KR10-2011-0027780 | 2011-03-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012133976A1 true WO2012133976A1 (en) | 2012-10-04 |
Family
ID=46931641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2011/002742 WO2012133976A1 (en) | 2011-03-28 | 2011-04-18 | Method, server, terminal apparatus, and computer-readable recording medium for integrating plurality of nondeterministic finite automata for searching by simultaneously using plurality of regular expressions |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2012133976A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101645890B1 (en) * | 2015-07-13 | 2016-08-05 | 연세대학교 산학협력단 | Method and Device for Reducing NFA |
CN114896469A (en) * | 2022-04-29 | 2022-08-12 | 阿里巴巴(中国)有限公司 | Regular expression engine construction method and device, storage medium and equipment |
KR20230042986A (en) | 2021-09-23 | 2023-03-30 | 연세대학교 산학협력단 | Automata processing method and apparatus for regular expression engines using glushkov automata generation and hybrid matching |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10207912A (en) * | 1996-11-21 | 1998-08-07 | Sharp Corp | Method for retrieving character and character string and recording medium to be used for the same |
KR20070085848A (en) * | 2007-06-07 | 2007-08-27 | 미쓰비시덴키 가부시키가이샤 | Character string checking device and character string checking program |
US20080271141A1 (en) * | 2007-04-24 | 2008-10-30 | Juniper Networks, Inc. | Parallelized pattern matching using non-deterministic finite automata |
-
2011
- 2011-04-18 WO PCT/KR2011/002742 patent/WO2012133976A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10207912A (en) * | 1996-11-21 | 1998-08-07 | Sharp Corp | Method for retrieving character and character string and recording medium to be used for the same |
US20080271141A1 (en) * | 2007-04-24 | 2008-10-30 | Juniper Networks, Inc. | Parallelized pattern matching using non-deterministic finite automata |
KR20070085848A (en) * | 2007-06-07 | 2007-08-27 | 미쓰비시덴키 가부시키가이샤 | Character string checking device and character string checking program |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101645890B1 (en) * | 2015-07-13 | 2016-08-05 | 연세대학교 산학협력단 | Method and Device for Reducing NFA |
KR20230042986A (en) | 2021-09-23 | 2023-03-30 | 연세대학교 산학협력단 | Automata processing method and apparatus for regular expression engines using glushkov automata generation and hybrid matching |
CN114896469A (en) * | 2022-04-29 | 2022-08-12 | 阿里巴巴(中国)有限公司 | Regular expression engine construction method and device, storage medium and equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2012108623A1 (en) | Method, system and computer-readable recording medium for adding a new image and information on the new image to an image database | |
US8843508B2 (en) | System and method for regular expression matching with multi-strings and intervals | |
WO2010011026A2 (en) | Search system using image | |
WO2012091400A1 (en) | System and method for detecting malware in file based on genetic map of file | |
US20120005234A1 (en) | Storage medium, trie tree generation method, and trie tree generation device | |
WO2013154252A1 (en) | Method, server, terminal device, and computer-readable recording medium for selectively removing nondeterminism of nondeterministic finite automata | |
WO2018080228A1 (en) | Server for translation and translation method | |
WO2014201047A1 (en) | Fast, scalable dictionary construction and maintenance | |
WO2012133976A1 (en) | Method, server, terminal apparatus, and computer-readable recording medium for integrating plurality of nondeterministic finite automata for searching by simultaneously using plurality of regular expressions | |
CN106708956A (en) | HTTP (Hyper Text Transport Protocol) data matching method based on multi-URL (Uniform Resource Locator) rule set | |
WO2022108318A1 (en) | Apparatus and method for analyzing smart contract code vulnerabilities | |
CN116663019B (en) | Source code vulnerability detection method, device and system | |
Chida et al. | On lookaheads in regular expressions with backreferences | |
WO2016117739A1 (en) | In-memory database-based data management system and method | |
WO2023153558A1 (en) | Method for managing authority over resources included in structured document, and apparatus using same | |
WO2018147543A1 (en) | Concept graph based query-response system and context search method using same | |
WO2024122871A1 (en) | Method for maintaining cache coherency in cluster file system | |
WO2021230463A1 (en) | Method for optimizing on-device neural network model by using sub-kernel searching module and device using the same | |
CN112417226B (en) | Big data processing method based on DAG conversion | |
US20100205411A1 (en) | Handling complex regex patterns storage-efficiently using the local result processor | |
WO2011118915A4 (en) | Application search system | |
Agun et al. | An efficient regular expression inference approach for relevant image extraction | |
CN113835712B (en) | Fast data packet routing method for judging according to given field value | |
WO2022107955A1 (en) | Semantic role labeling-based method and apparatus for neural network calculation | |
WO2018182058A1 (en) | Join method for relational database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11861953 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11861953 Country of ref document: EP Kind code of ref document: A1 |