정규 언어가 추가되어 폐쇄됩니까?


10

구체적으로 덧셈의 의미는 를 알파벳 { 0 , 1 , 2 ,로 정의 합니다. . . , 나는 } . 지정된 정규 언어 와 B 약간의 알파벳에서 Σ 에서,보기 × B .Σi{0,1,2,...,i}ABΣiA×B

모든 순서 쌍 에 대해이 순서 쌍의 "합계"를 a + b 로 정의합니다 . 여기서 ab 는 밑 i의 숫자입니다. 선행 0은 무시되므로 0 * 는 허용되는 모든 문자열 앞에 있습니다. 이는 ϵ 이 0으로 정의 됨을 의미합니다 .(a,b)A×Ba+bab0ϵ

언어 는 가능한 모든 합계를 나타내는 문자열 집합입니다.A+B

지금까지 나는 알고 있습니다.

  • 이것은 단항 ( ) 에서도 마찬가지입니다 .Σ1
  • 유한 언어가 정규적이고 A + B 가 유한 하기 때문에 유한 정규 언어 B 에 해당됩니다 .ABA+B
  • 언어 = { s | (S)는베이스 (B)에서의 N의 배수 } 아래 Σ의 b는 임의의 정기적 인 B > = 1 . 이는 C i + C j = C i + j 와 같이 C n 형식의 모든 언어 도 추가 할 수 있음을 의미합니다 . 그러나 D = { s | 이 기준에 맞지 않는 1}로 시작하고 끝나므로 모든 정규 언어를 설명하지는 않습니다.Cn{|}Σbb>=1CnCi+Cj=Ci+jD{|

2
A
가베

당신이 옳아 요 그에 따라 질문을 편집했습니다. 나는 그 것을 증명하려고 노력했고 그것이 사실 인 것처럼 보였고, 그런 다음 동질성이 무엇인지 잘못 이해하고 그것이 사실이라고 가정했습니다. 하지만 죄송합니다. b> a에서 일부 a> 1에 대해 언어가 규칙적인 경우 다른 b> (ac)에서도 1 <= c <a에 대해 규칙적입니다. (예를 들어, 언어가 기본 8에서 규칙적이라면 기본 8 dfa를 시뮬레이션함으로써 기본 4와 2에서도 규칙적입니다).
Phylliida

"이것은 ϵ이 0으로 정의됨을 의미합니다." 나는 그것이 무엇을 의미하는지 이해하지 못한다. 0과 ϵ가 동일하면 모든 0을 제거 할 수 있으며 숫자 해석이 더 이상 작동하지 않습니다.
babou

요점은 단순히 빈 문자열 ϵ이 순서 쌍에 있으면 다른 문자열에 0을 추가한다는 것입니다. 또한 앞에 0이있는 문자열은 제거 할 수 있습니다. 이것이 의미하는 것은 예를 들어 000101은 101과 동일합니다. 이것은 ϵ 자체에 문자열 표시되면 0 또는 00 또는 000 자체 의 합계와 관련하여 값이 같습니다 . 해당 문자열이 다른 문자열 내에 있으면 모든 베팅이 해제되며이 대체는 더 이상 유효하지 않습니다.
Phylliida

답변:


14

그렇습니다.

Σi3AABBCABABC 한 자리수의 캐리 만 상태로 유지하면서 오른쪽에서 왼쪽으로 스캔하여 추가를 수행 할 수 있다는 사실을 사용합니다.

ABCAB


정말 대단합니다. 그런 식으로 스택을 사용할 수 있다는 것을 몰랐습니다. 감사!
Phylliida

분명히 이것은 크기가 같은 문자열의 합만 포함하기 때문에 약간 iffy이지만, 왼쪽에 0을 추가하여 크기가 다른 문자열의 합을 "시뮬레이션"할 수 있기 때문에 dfa를 수정하는 것이 간단합니다. 모든 수용 문자열 앞에서 0 *을 인식하는 다른 dfa
Phylliida

가장 큰 열쇠는 A와 B가 0 * ​​A와 0 * B와 같은 방식으로 "기술적으로 수정"되어야한다고 가정하고 일단 그렇게하면 a와 b의 각 쌍에 대해 0 * a + 0 * b st의 합은 두 값 모두 크기와 일치하기에 충분한 선행 0을 가지며, C가 동일한 방식으로 수정되므로 필요에 따라 결과를 0으로 제거 할 수 있습니다. 그 말이 암시 되었습니까, 아니면 내가 놓친 것을 볼 수있는 더 간단한 방법이 있습니까?
Phylliida

예, 패딩과 관련된 몇 가지 기술이 있지만 기본 아이디어는 실제로 변경되지 않으므로 생략했습니다.
David Eppstein

멋지다.
Phylliida

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.