결정론적 비순환 유한 상태 오토마톤
Deterministic acyclic finite state automaton컴퓨터 과학에서, 결정론적 원자가 비고리형인 유한 상태 automaton(DAFSA)[1]또한 그것은 지정된 문자열은 테스트한 쿼리 작업할 수 문자열의 집합을 나타낸 연출한 원자가 비고리형인 단어 그래프(DAWG, 접미사 index[2]그런 이름 또한 관련 데이터 구조에 대해 언급하고 있는 기능)데이터 구조라고 불렀다.s몸 상태를그는 그 길이에 비례하여 시간을 정했다.알고리즘은 이러한 자동 [1]데이터를 최소화하고 구축 및 유지하기 위해 존재합니다.
DAFSA는 단일 소스 정점(착신 모서리가 없는 정점)을 가진 방향 비순환 그래프의 형태를 취하는 유한 상태 인식자의 특수한 경우이며, 여기서 그래프의 각 모서리는 문자 또는 기호로 라벨이 지정되며, 각 정점은 가능한 각 문자 또는 기호별로 최대 1개의 발신 모서리를 가집니다.DAFSA에 의해 표현되는 문자열은 소스 정점에서 싱크 정점(발신 에지가 없는 정점)까지의 그래프 내 경로에 있는 기호로 구성됩니다.사실 결정론적 유한 상태 자동화는 유한한 문자열 집합을 인식하는 경우에만 [1]비순환적입니다.
시행과의 비교
복수의 패스에 의해 같은 정점에 도달할 수 있도록 함으로써 DAFSA는 강하게 관련된 트라이 데이터 구조보다 훨씬 적은 정점을 사용할 수 있다.예를 들어 "tap", "taps", "top" 및 "tops"의 네 가지 영어 단어를 생각해 보십시오.이들 4개의 워드의 트리에는 12개의 정점이 있으며, 각 스트링에 대해 각각1개씩 이들 워드의 프리픽스로 형성되어 있거나 스트링의 끝 마커가 이어지는 워드에 대해1개씩 형성되어 있습니다.그러나 DAFSA는 0 µi µ5에 대해 6개의 정점i v만을 사용하여 동일한 4개의 단어를 나타낼 수 있습니다. 즉, "t"라는0 라벨이 붙은 v에서 v로1223 라벨이 지정된 v에서 v로 라벨이134 지정된 v와 v로 라벨이 지정된 v에서 v로4 라벨이 지정된 v와 v-string의 끝과5 v-string으로 라벨이 지정된 v에서 v로 라벨이 지정된 v로 라벨이 지정된 v로 라벨이 지정된 v-string으로 라벨이 지정된 v로 라벨이 지정된 v로 표시된 v-string의 끝을 사용할 수 있습니다3.메모리와 기능 사이에는 트레이드오프가 있습니다.표준 DAFSA는 그 안에 단어가 존재하는지 여부를 알려 줄 수 있지만, 그 단어에 대한 보조 정보를 나타낼 수는 없기 때문입니다.반면 트라이는 가능합니다.
DAFSA와 trie의 주요 차이점은 문자열을 저장할 때 서픽스와 infix 용장성이 배제된다는 것입니다.trie를 사용하면 의사나 박사 등 모든 공통 프레픽스가 문자열 간에 공유되므로 프레픽스의 용장성이 제거됩니다.DAFSA에서는 공통 접미사도 공유되며, 서로 동일한 접미사를 가질 수 있습니다.일반적인 영어 단어 사전의 경우 이는 메모리 사용량을 크게 줄일 수 있습니다.
DAFSA의 단말 노드는 복수의 패스에 의해 도달할 수 있기 때문에 DAFSA는 각 패스에 관한 보조 정보, 예를 들어 영어에서의 단어의 빈도를 직접 저장할 수 없다.단, 각 노드에 대해 해당 지점을 통과하는 고유 경로의 수를 구조체에 저장하는 경우 이를 사용하여 단어 또는 해당 [3]색인이 지정된 단어의 색인을 검색할 수 있습니다.그런 다음 보조 정보를 배열에 저장할 수 있습니다.
레퍼런스
- ^ a b c 얀 다치욱, 스토얀 미호프, 브루스 왓슨, 리처드 왓슨(2000).최소 비순환 유한 상태 오토마타의 증분 구성.컴퓨터 언어학 26 (1): 3-16.
- ^
이 문서에는 NIST 문서의 퍼블릭 도메인 자료가 포함되어 있습니다.Black, Paul E. "directed acyclic word graph". Dictionary of Algorithms and Data Structures. - ^ Kowaltowski, T.; CL Lucchesi (1993). "Applications of finite automata representing large vocabularies". Software-Practice and Experience. 1993: 15–30. CiteSeerX 10.1.1.56.5272.
- Blumer, A.; Blumer, J.; Haussler, D.; Ehrenfeucht, A.; Chen, M.T.; Seiferas, J. (1985), "The smallest automaton recognizing the subwords of a text", Theoretical Computer Science, 40: 31–55, doi:10.1016/0304-3975(85)90157-4
- 데이터 구조의 초기 설명 중 하나Appel, Andrew; Jacobsen, Guy (1988), "The World's Fastest Scrabble Program" (PDF), Communications of the ACM, 31 (5): 572–578, doi:10.1145/42411.42420.
- 를 클릭합니다Jansen, Cees J. A.; Boekee, Dick E. (1990), "On the significance of the directed acyclic word graph in cryptology", Advances in Cryptology — AUSCRYPT '90, Lecture Notes in Computer Science, vol. 453, Springer-Verlag, pp. 318–326, doi:10.1007/BFb0030372, ISBN 3-540-53000-2.
- Epifanio, Chiara; Mignosi, Filippo; Shallit, Jeffrey; Venturini, Ilaria (2004), "Sturmian graphs and a conjecture of Moser", in Calude, Cristian S.; Calude, Elena; Dineen, Michael J. (eds.), Developments in language theory. Proceedings, 8th international conference (DLT 2004), Auckland, New Zealand, December 2004, Lecture Notes in Computer Science, vol. 3340, Springer-Verlag, pp. 175–187, ISBN 3-540-24014-4, Zbl 1117.68454
- Tresoldi, Tiago (2020), "DAFSA: a Python library for Deterministic Acyclic Finite State Automata", Journal of Open Source Software, 5 (46): 1986, doi:10.21105/joss.01986 오픈 소스 Python 구현입니다.