정규식 골프 NP- 완전합니까?


26

이 최근 XKCD 스트립최근 블로그 게시물 에서 볼 수 있듯이Peter Norvig (및 후자를 특징으로하는 슬래쉬 도트 이야기)에서 나온 "regex golf"(정규식 분리 문제라고 부를 수 있음)는 세트 A의 모든 단어를 받아들이고 단어를 입력하지 않는 가장 짧은 정규식을 정의하는 퍼즐입니다. Norvig의 게시물에는 합리적으로 짧은 후보를 생성하는 알고리즘이 포함되어 있으며 그의 접근 방식에는 NP-complete Set Cover 문제를 해결하는 것이 포함되지만 그의 접근 방식은 가능한 모든 정규 표현식을 고려하지 않는다는 점을 지적합니다. 물론 그의 알고리즘이 반드시 유일한 알고리즘은 아니기 때문에 그의 솔루션이 최적의 것으로 보장되지는 않으며, 다른 다항식 시간 알고리즘이 동등하거나 더 나은 솔루션을 찾을 수도 있습니다.

구체화를 위해 그리고 최적화 문제를 해결해야하는 것을 피하기 위해 정규 표현식 분리의 가장 자연스러운 공식은 다음과 같습니다.

주어 두 (유한)가 설정 및 일부 위에 알파벳 스트링 , 길이 정규식가 의 모든 문자열을 사용할 것을 및 모든 문자열 거부 ?ABΣkAB

이 분리 문제의 복잡성에 대해 알려진 것이 있습니까? ( 와 를 유한 한 문자열 집합으로 지정했기 때문에 문제의 크기의 자연스러운 개념은 와 의 모든 문자열의 총 길이입니다 . 이는 기여를 ). 그것은 가능성이 높다 내게는 보인다 이다 NP-완료 (사실, 나는 감소가 커버 문제 일종의 것으로 기대)하지만 몇 가지 검색이 특히 유용 아무것도를 설정하지 않았습니다.ABABk


3
NP에도 있습니까? 정규 표현식이 주어지면 다항식 시간으로 단어가 설명 언어인지 확인하는 방법은 무엇입니까? 표준 접근 방식 (NFA로 변환 한 다음 DFA 및 확인)은 지수 시간 ( (?)을 사용합니다. k
Raphael

1
PSPACE가 완전해야합니다. ggramlich.github.io/Publications/approximationSTACS05Pres.pdfciteseerx.ist.psu.edu/viewdoc/ 에서 (Gramlich, Schnitger, NFA 및 정규 표현식 최소화, 2005)을 참조하십시오 . 대답은 이유를 설명해야하지만 지금은 그렇게 할 시간이 없습니다. 아마도 다른 사람이 참조를 사용하고 어떻게 작동하는지 설명 할 수 있습니다)
rgrig

1
TCS에서 이해되는 정규식의 경우 문제는 NP에 있습니다 (다항식 크기의 인증서이며 다항식 시간으로 확인할 수있는 것은 정규식 자체입니다). 멤버쉽 테스트도 NP-hard ( perl.plover.com/NPC/NPC-3SAT.html ) 이기 때문에 정규 표현식에 PCRE를 사용하는 경우 아마도 NP에 있지 않습니다 (아마도 ).
Mike B.

1
@ MikeB. : 그리고 다항식 시간을 정확히 어떻게 확인합니까? @Raphael의 코멘트를 보셨습니까?
rgrig

5
(1) P에서 결정 론적 알고리즘을 실행하여 NFA 멤버십을 테스트 할 수 있습니다 (시작 상태에서 시작하고 단어의 기호를 사용한 후있을 수있는 모든 상태를 기억하십시오. 끝까지 도달하면 최소한 도달했는지 확인하십시오) 하나의 최종 상태.) (2) "정규 표현"의 정의에 달려 있습니다. 우리는 컴퓨터 과학 자나 프로그래머를 사용합니까? 일반 언어 또는 문맥에 맞는 언어 (따라서 PCRE)의 일부만 허용합니까?
Mike B.

답변:


14

정규 표현식의 TCS 변형을 가정하면 문제는 실제로 NP가 완료된 것입니다.

우리는 정규 표현식에

  • 자신과 일치하는 편지Σ
  • + , 노동 조합을 나타내는
  • 연결을 나타내는
  • Kleene-Star를 나타내는
  • λ빈 문자열과 일치하는

그리고 다른 것은 없습니다. 정규식의 길이는 의 문자 수로 정의됩니다 . 연재 만화에서와 같이 단어의 하위 문자열과 일치하는 단어를 일치시키는 정규식을 고려합니다. (이러한 가정을 변경하면 아래의 구성 복잡성에만 영향을 주지만 일반적인 결과에는 영향을 미치지 않아야합니다.)Σ

주석에 설명 된 것처럼 NP에 있음은 간단합니다 (후보자 RE를 NFA로 변환하고 및 모든 단어에서 실행하여 검증 ).BAB

NP 경도를 나타 내기 위해 Set cover를 줄입니다.

유니버스 주어 및 수집 의 서브 세트 , 세트가 크기는 되도록 ?C U C 'C K S C ' S = UUCUCCkSCS=U

우리는 다음과 같이 세트 커버 입력을 정규식 골프 입력으로 변환합니다.

  • Σ 는 각 부분 집합에 대해 하나의 문자 와 하나의 추가 문자 ( 로 표시)를 포함합니다.xCx 다음에서 )가 포함됩니다.
  • U의 각 요소 e 에대해 하나의 단어를 포함합니다. 이 단어는 e 를 임의의 순서로포함하는 C의 하위 집합을 나타내는 문자로 정확하게 구성됩니다.AeUCe
  • 는 단일 단어 x를 포함합니다.Bx
  • 는 단순히 이월됩니다.k

이 감소는 분명히 P로, 동등성은 또한 매우 간단합니다.

  • 경우 세트 커버 인스턴스에 대한 해결책, 정규식 C 1 + + C k는 정규식 골프에 대한 해결책이다.c1,,ckc1++ck
  • 빈 하위 단어와 일치하는 정규 표현식은 와 일치 합니다. 따라서 골프 문제를 해결하는 정규식은 A의 각 단어에서 하나 이상의 문자를 포함해야합니다 . 따라서, 골프 인스턴스가 풀릴 수있는 경우, Σ 로부터 최대 k 개의 문자 세트가 있으므로 A의 각 단어는 이 문자 세트로 커버된다. 구성에 의해, C 로부터의 대응하는 서브 세트 는 세트 커버 인스턴스에 대한 해결책이다.xAkΣAC

ABO(n)a1+a2+...,aiAO(n)k

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