문자열 연산

String operations

컴퓨터 과학에서, 형식 언어 이론의 영역에서는, 자주 사용하는 것은 다양한 문자열 함수로 만들어진다. 그러나, 사용하는 표기법은 컴퓨터 프로그래밍에 사용되는 것과 다르며, 이론 영역에서 일반적으로 사용되는 몇몇 기능들은 프로그래밍할 때 거의 사용되지 않는다.이 글은 이러한 기본적인 용어 중 일부를 정의하고 있다.

문자열 및 언어

문자열은 문자의 유한한 배열이다.The empty string is denoted by . The concatenation of two string and is denoted by , or shorter by . Concatenating with the empty string makes no difference: 문자열의 연결)= (t ) = (t t )u {\s\t)\

For example, .

언어는 유한하거나 무한한 문자열의 집합이다.조합, 교차로 등과 같은 일반적인 세트 작업 외에도, 은 언어에 적용될 수 있다: S S 이(가) 언어인 경우, 이들의 연결 은 S 모든 스트린의 문자열 집합으로 정의된다.g from , formally . Again, the concatenation dot is often omitted for brevity.

로만 구성된 { {\은(는) 빈 언어 과(와) 구분되어야 한다 어떤 언어도 전자 언어와 연결해도 아무런 변화가 없다. { = = { S 후자와 연결하면 항상 빈 언어가 나온다.. Concatenation of languages is associative: .

For example, abbreviating , the set of all three-digit십진수는 D D 임의길이의 모든 십진수 세트는 무한언어의 예다.

문자열의 알파벳

문자열의 알파벳은 특정 문자열에서 발생하는 모든 문자의 집합이다.s가 문자열인 경우 문자열이 다음으로 표시됨

언어 알파벳 의 문자열에서 발생하는 모든 문자의 집합이며 형식적으로는 다음과 같다. (S ) = ( s) (s .

For example, the set is the alphabet of the string , and the above is the alphabet of the above language 모든 소수점 이하 언어.

문자열 대체

L언어가 되게 하고, Ⅱ를 그 알파벳이 되게 하라.문자열 대체 또는 단순 대체는 σ의 문자를 언어(아마도 다른 알파벳)에 매핑하는 매핑 f이다.따라서 예를 들어, 문자 given σ이 주어지면 f(a)=La 있는데 여기a L ⊆ Δ는* 알파벳 Δ인 어떤 언어다.이 매핑은 다음과 같이 문자열로 확장될 수 있다.

f.

빈 문자열의 경우

f(sa)=f(s)f(a)

문자열 sL문자 ∈ σ. 문자열 대체는 다음과 같이 전체 언어로 확장될 수 있다.

일반 언어는 문자열 대체에 의해 폐쇄된다.즉, 정규 언어의 알파벳에 있는 각 문자가 다른 정규 언어로 대체된다면 그 결과는 여전히 정규 언어인 것이다.[2]마찬가지로, 문맥 없는 언어는 문자열 대체에서 닫힌다.[3][note 1]

간단한 예로 대문자로의 변환uc f(.)를 들 수 있는데, 다음과 같이 정의할 수 있다.

캐릭터 언어에 매핑된 평론하다
x fuc(x)
‹› { ‹A› } 소문자를 해당 대문자에 매핑하십시오.
A { ‹A› } 대문자를 그 자체에 매핑하다.
ß { ‹SS› } 사용할 수 있는 대문자 없음, 2-char 문자열에 매핑
‹0› { ε } 숫자를 빈 문자열에 매핑
‹!› { } 구두점을 금지하다. 빈말로 지도하다.
... 다른 차자와 비슷한.

fuc 현으로 확장하기 위해, 예를 들어,

  • fuc(‹Straze›) = {‹S›} {‹T›} ⋅ {‹R›} ⋅ {‹A›} ⋅ {‹SS›} ⋅ {‹E›} = {‹TRASS›}}.
  • fuc(‹u2›) = {‹U›} ⋅ {ε} = {‹U›}, 그리고
  • fuc(‹Go!›) = {‹G›} ⋅ {‹O›} ⋅ {} = {}.

언어에 대한 fuc 확장에 대해서는, 예를 들어,

  • fuc({ ‹Straze›, ‹u2›, ‹Go!› }) = { ‹TRASS› } { ‹U› } = { ‹TRASS, ‹U› } = { ‹TRASS› }.

끈 동형성

끈 동형성(string homomorphism, 종종 형식 언어 이론에서는 동형성이라고 일컬어짐)은 각 문자가 하나의 문자열로 대체되는 문자열이다.즉, ()= s 서 s 은 각 a 에 대해 문자열이다[note 2][4]

문자열 동형성은 자유단모형단모형 형태로서, 빈 문자열과 문자열 결합이항연산을 보존한다.언어 를) 지정하면 f() 을(를) 동형상이라고 한다 문자열 의 역동형상(역) 다음과 같이 정의된다.

언어 의 역동형 이미지는 다음과 같이 정의된다.

으로 - 1( L) L

그리고

언어 L 에 대해

정규 언어의 클래스는 동형식과 역동형성으로 폐쇄된다.[5]마찬가지로, 문맥 없는 언어는 동형식과[note 3] 역동형성에 의해 폐쇄된다.[6]

문자열 동형문자는 {\대한 f( )) { { { 간단한한 글자 대체 암호는 ( hom-free) 문자열 동형문자의 예다.

문자열 동형상 guc 의 대체와 유사한 것을 정의함으로써 얻을 수 있다: g(‹auc‹) = ‹A›, ..., guc(‹0›) = ε. 그러나 구두점 문자에 guc 정의하지 않도록 한다.역동형 영상의 예는 다음과 같다.

  • guc−1uc({ ‹SS› }) = { ‹sss,, ssß,, ‹ßs› }}, g(ssss)) = guc(ssß) = g(ssß) = guc(ss›) = ‹SS› }, 그리고
  • guc−1({ ‹A›, ‹bb› }}) = { ‹a› }, guc(‹a›) = ‹A›, ‹b›은 g로 도달할 수 없기 때문에 gauc› }.

후자 언어의 경우uc guc−1uc({ ‹A›, ‹bb› }) = g({ ‹a› }}) = { ‹A› } { ‹A›, ‹b› }.동형상 guc ‹0›을 ε에 매핑하기 때문에 ε이 없는 것이 아니다.

각 문자를 단지 문자로 매핑하는 매우 간단한 문자열 동형상주의 예는 EBCDIC로 인코딩된 문자열을 ASCII로 변환하는 것이다.

문자열 투영

If s is a string, and is an alphabet, the string projection of s is the string that results by removing all characters that are not in . It is written as . It is formally defined by removal of characters from the right hand측면:

여기서 은(는) 빈 문자열을 나타낸다.문자열의 투영은 관계 대수에서의 투영과 본질적으로 동일하다.

문자열 투영은 언어 투영으로 승격될 수 있다.공식 언어 L을 지정하면, 그 투영은 다음에서 주어진다.

[필요하다]

오른쪽 지수

문자열 s에서 문자 a의 오른쪽 몫은 문자열 s에서 문자 a의 잘림이다./ 로 표시되며 문자열 오른쪽에 a가 없으면 빈 문자열로 표시된다.따라서 다음과 같다.

빈 문자열의 몫은 다음과 같다.

마찬가지로, 모노이드 부분 집합 을(를) 고려할 때, 하나의 몫의 부분 집합은 다음과 같이 정의할 수 있다

왼쪽 인용구는 문자열의 왼쪽에서 작업이 수행되는 경우와 유사하게 정의될 수 있다.[citation needed]

Hopcroft와 Ulman(1979)은2 L/L1 = { stL2. stL1}[7]과 같은 알파벳에 걸쳐 L1 L 언어2L1/L2 정의한다.문자열 s와 구별되는 문자 a, b, Hopcroft 및 Uullman의 정의는 {sa} / {b}이(가) { ε }이(가) 아닌 {}을(를) 양보한다는 것을 의미하기 때문에 위의 정의의 일반화는 아니다.

단일톤 언어 L1 임의 언어 L2 왼쪽 지수(Hopcroft 및 Ulman 1979년과 유사하게 정의되었을 때)는 Brzozowski 파생상품으로 알려져 있다. 만약 L2 정규 표현으로 표현된다면, 왼쪽 몫이 될 수 있다.[8]

통사적 관계

모노이드 부분 집합 M 의 오른쪽 지수는 S오른쪽 구문 관계라고 하는 동등성 관계를 정의한다.그것은 에 의해 주어진다.

가족 권리 인수가 유한한 경우에만, 즉 가족 권리 인수가 유한한 경우에만, 그 관계는 분명히 유한 지수(등가 등급의 유한한 수)이다.

유한하다.M이 일부 알파벳을 넘는 단어의 모노이드인 경우에, S는 그 때 정규 언어, 즉 유한 상태 자동화에 의해 인식될 수 있는 언어다.이것은 통사적 모노이드에 관한 글에서 더 자세히 논의된다.[citation needed]

권리취소

문자열 s에서 문자 a올바르게 취소하는 것은 문자열 s에서 문자 a가 처음 발생하는 것을 오른쪽에서 시작하여 제거하는 것이다. a 로 표시되며, 재귀적으로 정의된다.

빈 문자열은 항상 취소할 수 있음:

명확한 취소 및 예상 통근:

[필요하다]

접두사

문자열의 접두사는 문자열의 모든 접두사 집합이며, 지정된 언어에 대한 경우:

서 s L

언어의 접두사 폐쇄는

예:

()= 인 경우 언어는 접두사 닫힘이라고 불린다

접두사 폐쇄 연산자는 다음과 같은 IDempotent:

접두사 관계relation Pref ( ) s\ 경우에만 t 인 경우 } t }인 이진 관계 입니다이 관계는 접두사 주문의 특별한 예다.[citation needed]

참고 항목

메모들

  1. ^ 모든 정규 언어 역시 문맥이 없지만, 전자가 정규 언어에 대해 더 나은 결과를 산출하기 때문에 현재의 정리로는 이전의 정리가 함축되어 있지 않다.
  2. ^ 엄격히 형식적으로, 동음이의어는 단 하나의 문자열, () = 로 구성된 언어를 산출한다
  3. ^ 이것은 위에서 언급한 임의의 대체에 따른 폐쇄에서 비롯된다.

참조

  • Hopcroft, John E.; Ullman, Jeffrey D. (1979). Introduction to Automata Theory, Languages and Computation. Reading, Massachusetts: Addison-Wesley Publishing. ISBN 978-0-201-02988-8. Zbl 0426.68001. (제3장 참조)
  1. ^ 홉크로프트, 울만(1979년), 제3.2장, 페이지 60
  2. ^ 홉크로프트, 울만(1979년), 제3.2장, 정리 3.4, 페이지 60
  3. ^ 홉크로프트, 울만(1979년), 제6.2장, 정리 6.2, 페이지 131
  4. ^ 홉크로프트, 울만(1979년), 제3.2장, 페이지 60-61
  5. ^ 홉크로프트, 울만(1979년), 제3.2장, 정리 3.5, 페이지 61
  6. ^ 홉크로프트, 울만(1979년), 6.2장, 정리 6.3, 페이지 132
  7. ^ 홉크로프트, 울만(1979년), 제3.2장, 페이지 62
  8. ^ Janusz A. Brzozowski (1964). "Derivatives of Regular Expressions". J ACM. 11 (4): 481–494. doi:10.1145/321239.321249. S2CID 14126942.