Brzozowski의 알고리즘은 Moore automata로 확장 될 수 있지만 시간 복잡성은 일반적으로 기하 급수적입니다. Moore automata를 최소화하기위한 다른 알고리즘이 있습니까? 이 알고리즘의 실행 시간은 무엇입니까?
Brzozowski의 알고리즘은 Moore automata로 확장 될 수 있지만 시간 복잡성은 일반적으로 기하 급수적입니다. Moore automata를 최소화하기위한 다른 알고리즘이 있습니까? 이 알고리즘의 실행 시간은 무엇입니까?
답변:
원래의 DFA 최소화 알고리즘은 실제로 Moore Machines를 위해 설계되었으며 ,보다 명백한 동작으로 안내됩니다. 그러나 여기에 제시된 알고리즘은 DFA 최소화에서 재구성 된 것입니다. 사실 이후에 역사적인 증거를 발견했기 때문입니다.
Wikipedia 이후 (일부 표기법 변경) :
무어 머신 6 튜플로 정의 할 수있다 는 다음과 같이 구성된
- 유한 상태
- 의 요소 인 시작 상태 (초기 상태라고도 함) Q
- 입력 알파벳 라는 유한 세트
- 출력 알파벳 라는 유한 세트
- 전이 함수 상태와 입력 알파벳을 다음 상태로 매핑
- 출력 함수 각 상태를 출력 알파벳에 매핑
이 정의에서 Moore 기계는 결정 론적 유한 상태 변환기입니다.
Moore automata의 최소화에 대한 언급이 없습니다. 그러나 결정 론적 유한 상태 오토마타에 사용 된 알고리즘에서 파생 된 알고리즘을 상상하기는 어렵지 않습니다.
DFA 최소화의 아이디어 는 일반 언어 의 Myhill-Nerode 특성화를 기반으로합니다 .
언어 과 한 쌍의 문자열 와 주어지면 두 문자열 와 중 정확히 하나 가 속하도록 구별 확장을 문자열 로 정의하십시오 . 와 대한 구별 확장이없는 경우 이라는 규칙에 따라 문자열에 관계 을 정의하십시오 . 이 문자열에 대한 등가 관계 라는 것을 쉽게 알 수 있으므로 모든 문자열 세트를 등가 클래스로 나눕니다.x y z x z y z L R L x R L y x y R L
Myhill-Nerode 정리에서는 에 유한 수의 동등성 클래스가있는 경우에만 이 규칙적이며 인식하는 가장 작은 결정 론적 유한 오토 마톤 (DFA) 의 상태 수는 .R L L R L
실제로 각각의 상태 최소의 DFA는 그러한이다 상기 정의 된 관계에 대한 등가 클래스 중 하나 .W q R L
일반 언어에 대한 비 최소한의 DFA를 들어 , 각 세트 것을 보여주기 위해 쉽게 문자열을 포함하는 모든에 대하여 같은 동등한 클래스에 속하는 .W q R L
따라서 DFA의 최소화는 실제로 두 개의 고유 한 상태가 동일한 문자열을 포함하는 것으로 나타날 때마다 병합 상태 (등가 문자열 세트로 간주 됨)로 구성됩니다.
이 목적을 위해 합리적으로 빠른 두 가지 알고리즘, 시간 에있는 무어 알고리즘 (1956 과 시간 홉 크로프트 알고리즘 (1971)이 존재 합니다.O ( N 로그 N )
무어 오토마타로의 확장 은 트랜스 듀서 ( 대한 등가 관계를 로 재정의함에있어서 가장 잘 이해된다 . 관계 은 미래 입력이 수용 상태로 동등하게 이어질지 여부와 관련이있었습니다. 무어 오토마타 의 동등성 관계는 미래의 투입물이 동일한 산출물을 생산할 것인지에 관한 것이다. T R L R T
따라서, 트랜스 듀서 주어진 , 2 개 개의 스트링은 및 , 우리는 캐릭터로 구별 확장을 정의 되도록 및 와 또는 따르는 지 여부에 따라 트랜스 듀서의 출력 거동이 에 대해 달라 지도록 .x y z T ( x z ) = T ( x ) u T ( y z ) = T ( y ) v u ≠ v z x y
다시 는 등가 관계이며 모든 문자열 을 등가 클래스로 나눕니다. Moore 기계의 경우,이 클래스는 다시 최소 트랜스 듀서의 상태에 해당합니다.Σ ∗
다음 알고리즘은 DFA 최소화를위한 Moore 알고리즘을 모방합니다.
우리는 초기 파티션 정의 의 상태의 클래스로 다음과 같은를 : Q S e
그런 다음 의 클래스 를 다음과 같이 나눕니다 .
아무 것도 변하지 않을 때까지 각 상태의 클래스 에 대해 연속적으로 반복한다 repeat 경우 다음 아무것도하지 다른 분할은 서브 세트들로 되도록 각 서브 세트 다른 클래스가 이러한 그 (서브셋 는 에서 를 대체합니다.∀ a ∈ Σ ,
S S 나 S 나 S ' ∈ P ∀ Q ∈ S 난 ,
S i S P
)
남길 클래스가 없으면 남은 상태 클래스는 최소 무어 머신의 상태를 형성합니다.
구성에 따라 클래스의 모든 상태는 클래스의 출력과 동일한 출력을 갖습니다.
마찬가지로 모든 입력 에 대해 클래스의 모든 상태는 다른 클래스와 동일한 상태로 전환되어 최소 Moore 시스템의 전환 기능을 정의합니다.
복잡도 분석 :
하자상태 수이고입력 알파벳의 크기 각 반복은 적어도 하나의 상태 클래스를 분할해야하며 각 클래스는 하나 이상의 상태를 포함하므로
기본 루프는 최대 번 실행됩니다 . 루프를 반복 할 때마다 각 상태를 유한 한 횟수로 입력 심볼 수에 비례하여 검사합니다. 따라서 알고리즘의 복잡성은 이며,이 지침에 대한 지침으로 사용되는 DFA 최소화 알고리즘과 동일합니다.s = | Σ | N O는 ( s의 N 2 )
이 Moore 기계 최소화에 대한 참조가 없습니다. 아마도 그것은 그의 논문에 포함되어 있습니다 :
무어, 에드워드 F (1956). "순차 기계에 대한 가든 켄 실험". Automata Studies , Annals of Mathematical Studies (Princeton, NJ : Princeton University Press) (34) : 129-153.
이 문서는 Moore Machines를 소개하는 주요 참고 자료 입니다. 또한 Moore의 DFA 최소화 알고리즘에 대한 참조이기도합니다 . 따라서 무어 머신의 최소화에 대한 알고리즘의 적응이 그 논문에서 제안되지 않았다는 것은 놀라운 일이다. 논문을 확인했으며 제시된 최소화 알고리즘의 버전은 실제로 DFA가 아닌 Moore 컴퓨터 용입니다. 이 논문은 잘 쓰여졌지만 시간 스타일에 따라 읽기가 조금 더 어려워졌습니다. Finite State Machines의 Myhill-Nerode 이론의 많은 아이디어가 이미이 백서에 스케치되어 있음을 보는 것은 흥미 롭습니다.
John Hopcroft (1971)로 인한 최신 알고리즘 은 Moore 시스템에도 유사하게 적용 할 수 있어야합니다. 이 어댑테이션을 어디에서나 출판 할 이유가 있는지는 확실하지 않으며 Hopcroft 논문 은 Moore 기계에 대한 언급이없는 것 같습니다.
정규 표현식의 파생물을 사용하는 Brzozowski 알고리즘 버전은 [2], 12 장, 섹션 4에 나와 있으며 [4]로 간주됩니다. 후속 트랜스 듀서의보다 일반적인 경우에 대해서는 [1] 및 [3]을 참조하십시오 (용어는 약간 구식이며 현재 순차 트랜스 듀서 라는 용어 가 더 적합합니다).
C. Choffrut, 후속 트랜스 듀서 최소화 : 측량, Theoret. Comp. 공상 과학 292 (2003), 131–143]에 기재되어있다.
[2] S. Eilenberg, 오토마타, 언어 및 기계, vol. A, 1974 년 Academic Press.
[3] J.-E. Pin, 순차적 기능에 대한 튜토리얼 . (슬라이드)
[4] GN Raney, 순차 함수, JACM 5 (1958), 177–180.
Brzozowski의 알고리즘 은 잘못된 시작점입니다 (점근 적 최악의 런타임에 관심이있는 경우). Wikipedia조차도 많은 것을 알려줍니다.
Brzozowski (1963)가 관찰 한 바와 같이, DFA의 가장자리를 뒤집 으면 원래 언어의 반전을 위해 비 결정적 유한 오토 마톤 (NFA)이 생성되고 표준 전원 구성을 사용하여이 NFA를 DFA로 변환합니다 (연결 가능한 상태 만 구성). 변환 된 DFA)는 동일한 역 언어에 대해 최소 DFA로 이어집니다. 이 반전 작업을 두 번 반복하면 원래 언어에 대한 최소 DFA가 생성됩니다. Brzozowski 알고리즘의 최악의 복잡도는 반전의 최소 DFA가 언어의 최소 DFA보다 기하 급수적으로 큰 정규 언어가 있기 때문에 기하 급수적이지만 [6]이 최악의 경우가 제안하는 것보다 자주 더 잘 수행됩니다.
이 알고리즘은 DFA에서도 지수 최악의 런타임을 갖습니다. 그 역행에 대한 오토 마톤을 계산하기 때문에 지수 적으로 커야 할 수도 있습니다. 따라서 문제는 확장기에서 변환기로 오지 않습니다.
다른 DFA 최소화 알고리즘을 적용 해보십시오.