Kiểm tra xem các chữ cái có thể được lên lịch để đạt được một từ trong ngôn ngữ thông thường


23

Tôi sửa chữa một ngôn ngữ thông thường trên một bảng chữ cái , và tôi xem xét các vấn đề sau đây mà tôi gọi là kế hoạch lá thư cho . Một cách không chính thức, đầu vào cung cấp cho tôi chữ cái và một khoảng cho mỗi chữ cái (nghĩa là vị trí tối thiểu và tối đa) và mục tiêu của tôi là đặt mỗi chữ cái trong khoảng của nó sao cho không có hai chữ cái được ánh xạ vào cùng một vị trí và sao cho kết quả từ -letter là trong . Chính thức:L LΣ L n n LΣLnnL

  • Đầu vào: bộ ba trong đó và là các số nguyênn n( một i , l i , r i ) (ai,li,ri)một iΣ aiΣ1 l ir in1lirin
  • Đầu ra: có một phần tử sao cho cho tất cả và .f : { 1 , ... , n } { 1 , ... , n } f:{1,,n}{1,,n}l if ( i ) r ilif(i)ri i imột f - 1 ( 1 )một f - 1 ( n )Laf1(1)af1(n)L

Rõ ràng vấn đề này nằm ở NP, bằng cách đoán một mệnh đề và kiểm tra tư cách thành viên của trong PTIME. Câu hỏi của tôi: Có ngôn ngữ thông thường sao cho vấn đề lập lịch trình chữ cái cho là NP-hard?f fL LL LLL

Một số quan sát ban đầu:

  • Có vẻ như các vấn đề tương tự đã được nghiên cứu trong việc lập lịch trình: chúng ta có thể thấy vấn đề là lập lịch các nhiệm vụ chi phí đơn vị trên một máy trong khi tôn trọng ngày bắt đầu và kết thúc. Tuy nhiên, vấn đề thứ hai này rõ ràng là ở PTIME với cách tiếp cận tham lam và tôi không thấy bất cứ điều gì trong tài liệu lập lịch cho trường hợp các nhiệm vụ được dán nhãn và chúng tôi muốn đạt được một từ trong ngôn ngữ thông thường.
  • Một cách khác để xem vấn đề là như một trường hợp đặc biệt của một vấn đề phù hợp tối đa song phương (giữa các chữ cái và vị trí), nhưng một lần nữa thật khó để diễn tả ràng buộc chúng ta phải rơi vào .LL
  • Trong trường hợp cụ thể trong đó là ngôn ngữ có dạng đối với một số từ cố định (ví dụ: ), thì vấn đề lập lịch ký tự cho nằm trong PTIME với thuật toán tham lam dễ dàng: xây dựng từ từ trái sang phải và đặt ở mỗi vị trí một trong những chữ cái có sẵn tương ứng với và có thời gian nhỏ nhất . (Nếu không có chữ cái nào là chính xác, thất bại.) Tuy nhiên, điều này không khái quát thành ngôn ngữ thông thường tùy ý vì đối với những ngôn ngữ như vậy, chúng tôi có thể có lựa chọn sử dụng loại chữ nào.L Lu *u u u( một b ) *(ab) L LL Lr iri LL
  • Có vẻ như một thuật toán động sẽ hoạt động, nhưng trên thực tế nó không đơn giản như vậy: có vẻ như bạn sẽ cần phải ghi nhớ tập hợp các chữ cái mà bạn đã thực hiện cho đến nay. Thật vậy, khi xây dựng một từ từ trái sang phải, khi bạn đã đạt đến một vị trí , trạng thái của bạn phụ thuộc vào những chữ cái bạn đã tiêu thụ cho đến nay. Bạn không thể ghi nhớ toàn bộ tập hợp vì sau đó sẽ có nhiều trạng thái theo cấp số nhân. Nhưng thật không dễ để "tóm tắt" nó (ví dụ: bằng cách sử dụng bao nhiêu bản sao của mỗi chữ cái), vì để biết bạn đã sử dụng bản sao nào, có vẻ như bạn cần nhớ khi bạn tiêu thụ chúng (bạn đã tiêu thụ sau này chúng, càng nhiều chữ cái có sẵn). Ngay cả với một ngôn ngữ như ,ii(ab|ba)(ab|ba)abab và khi nào bạn nên chọn lấy tùy thuộc vào những chữ cái bạn sẽ cần sau này và khi nào các chữ cái có sẵn.baba
  • Tuy nhiên, vì ngôn ngữ thông thường được cố định và không thể ghi nhớ quá nhiều thông tin, tôi gặp khó khăn khi tìm một vấn đề NP-hard mà tôi có thể giảm bớt.LL

Bạn có thể có được tính đầy đủ NP cho một số L trong PTIME không?
Lance Fortnow

3
@LanceFortnow Chắc chắn rồi. Bạn có thể đệm 3CNF để mọi biến số xuất hiện theo số chẵn của chữ và cứ hai lần xuất hiện liên tiếp bị phủ định. Mã hóa thành hoặc , sau đó trong trường hợp lập lịch ký tự, các ký hiệu được cố định trong khi phần còn lại là nửa và nửa . Trong thời gian đa thức, người ta có thể kiểm tra xem chuỗi có mã hóa 3CNF được đệm hay không, đánh giá là đúng. xixi0i0i1i1i(,),,(,),,0011
Willard Zhan

Bạn cũng có thể khái quát vấn đề thành "các vị trí tùy ý" (không giới hạn ở 1..n). Có lẽ dễ dàng hơn để chứng minh độ cứng (nếu nó cứng).
Marzio De Biasi

@MarzioDeBiasi: Tôi không chắc là tôi hiểu, ý bạn là vị trí của các chữ cái có thể là bất kỳ tập hợp con tùy ý hơn là một khoảng? Tôi không biết điều này có khó không (nó bắt đầu giống một chút vấn đề khớp hoàn hảo chính xác ), nhưng phiên bản với các khoảng cho phép thuật toán tham lam khi vì vậy tôi có hy vọng rằng nó có thể dễ dàng hơn. L=uL=u
a3nm

@ a3nm: không, ý tôi là bạn có thể khái quát hóa việc loại bỏ ràng buộc ; bạn yêu cầu một từ trong L trong đó có ít nhất một chữ cái trong phạm vi ; nói cách khác, bạn không "xây dựng" toàn bộ từ có độ dài , nhưng yêu cầu một từ có độ dài tùy ý có chứa các chữ cái đã cho trong phạm vi được phép. Tôi không biết điều này có làm thay đổi sự phức tạp của vấn đề hay không, nhưng trong trường hợp này, bạn phải đối mặt với "các chỉ mục" có thể không bị giới hạn về mặt chính trị bởi độ dài của đầu vào. r in a i [ l i . . r i ] nrinai[li..ri]n
Marzio De Biasi

Câu trả lời:


7

Vấn đề là NP-khó khăn cho L = A * nơi Một là ngôn ngữ hữu hạn có chứa các từ sau:L=AA

  • x 111 , x 000 ,x111x000
  • y 100 , y 010 , y 001 ,y100y010y001
  • 00 c 11 , 01 c 10 , 10 c 01 11 c 0000c1101c1010c0111c00

Việc giảm là từ vấn đề Định hướng đồ thị, được biết đến là NP-hard (xem https://link.springer.com/article/10.1007/s00454-017-9884-9 ). Trong vấn đề này, chúng tôi được cung cấp một biểu đồ vô hướng 3 thông thường trong đó mọi đỉnh được gắn nhãn " { 1 } " hoặc " { 0 , 3 } ". Mục tiêu là chỉ đạo các cạnh của đồ thị sao cho phần ngoài của mọi đỉnh nằm trong nhãn được đặt theo đỉnh đó.{1}{0,3}

Việc giảm cần phải lấy đầu vào là một đối tượng Định hướng đồ thị và tạo ra một danh sách các bộ ba làm đầu ra. Trong phần giảm này, bộ ba mà chúng ta tạo ra sẽ luôn đáp ứng các ràng buộc nhất định. Các ràng buộc này được liệt kê dưới đây và chúng tôi sẽ đề cập đến một danh sách các bộ ba là hợp lệ khi và chỉ khi chúng thỏa mãn các ràng buộc này:

  • Các ký tự x , yc chỉ là các khoảng cho trước có chứa chính xác một chỉ mục. Nói cách khác, bất cứ khi nào các ký tự này được đặt, chúng được đặt ở các vị trí cụ thể.xyc
  • Với mỗi bộ ba ( i , l , r ) có trong trường hợp với i { 0 , 1 } , bộ ba ( 1 - i , l , r ) cũng có mặt.(i,l,r)i{0,1}(1i,l,r)
  • Nếu ( α , l , r )( α ' , l ' , r ' ) đều gấp ba hiện diện trong các trường hợp sau đó, hoặc l < l 'r ' < r , hay l ' < l r < r ' , hoặc { α , α } = { 0 , 1 } với l = l(α,l,r)(α,l,r)l<lr<rl<lr<r{α,α}={0,1} < R = r .l=l<r=r
  • Nếu ( α , l , r ) là một triple sau đó số lượng gấp ba ( α ' , l ' , r ' ) với l l 'r 'r là chính xác r - l + 1 .(α,l,r)(α,l,r)llrrrl+1

Lưu ý bổ đề sau, đã được chứng minh ở cuối bài này.

Bổ đề: đối với danh sách ba lần hợp lệ, các ký tự x , yc phải được đặt chính xác như được chỉ định bởi các bộ ba và cho bất kỳ cặp ba ( 0 , l , r )( 1 , l , r ) , hai ký tự cho bộ ba đó phải được đặt ở các chỉ số lr .xyc(0,l,r)(1,l,r)lr

Sau đó, ý tưởng của giảm là sau đây.

Chúng tôi sử dụng các cặp ba ( 0 , l , r )( 1 , l , r ) để thể hiện các cạnh. Cạnh đi giữa các điểm cuối tại chỉ số l và tại chỉ số r . Giả sử chúng ta tạo ra một danh sách ba lần hợp lệ, các ký tự từ hai bộ ba này phải được đặt ở lr , vì vậy chúng ta có thể coi thứ tự mà chúng được đặt như chỉ ra hướng của cạnh. Ở đây 1 là "đầu" của cạnh và 0 là "đuôi". Nói cách khác, nếu 1 được đặt tại r(0,l,r)(1,l,r)lrlr101rthì các điểm cạnh từ l đến r và nếu 1 được đặt tại l thì các điểm cạnh từ r đến l .lr1lrl

Để biểu diễn các đỉnh, chúng ta đặt một ký tự x hoặc y vào một chỉ mục và sử dụng ba ký tự tiếp theo làm điểm cuối của ba cạnh chạm vào đỉnh. Lưu ý rằng nếu chúng ta đặt một x , cả ba cạnh ở đỉnh phải chỉ trong cùng một hướng (tất cả vào đỉnh hoặc tất cả ra khỏi đỉnh) chỉ đơn giản là do các dây có trong ngôn ngữ hữu hạn Một . Các đỉnh như vậy có giá trị 0 hoặc 3 , vì vậy chúng tôi đặt một x chính xác cho các đỉnh có nhãn { 0 , 3 } . Nếu chúng ta đặt một yxyxA03x{0,3}y, Chính xác một trong ba cạnh tại điểm đỉnh phải theo cùng một hướng do các chuỗi trong Một . Các đỉnh như vậy có giá trị vượt quá 1 , vì vậy chúng tôi đặt y chính xác cho các đỉnh có nhãn { 1 } .A1y{1}

Trong một số ý nghĩa, chúng tôi đã hoàn thành. Cụ thể, sự tương ứng giữa việc giải quyết thể hiện này và giải quyết đối tượng Định hướng đồ thị phải rõ ràng. Thật không may, danh sách các bộ ba chúng tôi sản xuất có thể không hợp lệ và do đó, các "cạnh" được mô tả có thể không hoạt động như dự định. Cụ thể, danh sách các bộ ba có thể không hợp lệ vì điều kiện là các khoảng từ bộ ba phải luôn chứa nhau có thể không giữ được: các khoảng cách từ hai cạnh có thể trùng nhau mà không có cái kia chứa.

Để chống lại điều này, chúng tôi thêm một số cơ sở hạ tầng. Cụ thể, chúng tôi thêm "đỉnh chéo". Một đỉnh chéo là một đỉnh bậc 4 có các cạnh được ghép sao cho trong mỗi cặp, một cạnh phải hướng vào đỉnh chéo và một cạnh. Nói cách khác, một đỉnh chéo sẽ hành xử giống như chỉ hai cạnh "chéo". Chúng tôi biểu diễn một đỉnh chéo bằng cách đặt ký tự c tại một số chỉ số i . Sau đó lưu ý rằng ngôn ngữ A ràng buộc các ký tự tại i - 1i + 2 đối diện (một 01 1 ) và các ký tự tại i - 24ciAi1i+201i2i + 1 ngược lại. Do đó, nếu chúng ta sử dụng các chỉ số này làm điểm cuối cho bốn cạnh ở đỉnh giao nhau, thì hành vi này chính xác như được mô tả: bốn cạnh nằm trong cặp và trong mỗi cặp một điểm và một điểm ra.i+1

Làm thế nào để chúng ta thực sự đặt những chéo này? Giả sử chúng ta có hai khoảng ( l , r )( l , r ) trùng nhau. Wlog, l < l ' < r < r ' . Chúng ta thêm ký tự chéo vào giữa (giữa l r ). (Chúng ta hãy nói rằng tất cả cùng chúng ta cách nhau mọi thứ cho đến khi luôn có đủ không gian và cuối cùng chúng ta sẽ xóa mọi khoảng trống không sử dụng.) Hãy để chỉ số của ký tự chéo là i . Sau đó, chúng tôi thay thế bốn bộ ba ( 0(l,r)(l,r)l<l<r<rlri, l , r ) , ( 1 , l , r ) , ( 0 , l , r ) ( 1 , l , r ) với tám bộ ba với hai (một với ký tự 0 và một với ký tự 1 ) trong bốn khoảng thời gian sau ( l , i - 1 ) , ( i + 2 , r )(0,l,r)(1,l,r)(0,l,r)(1,l,r)01(l,i1)(i+2,r), ( l , i - 2 ) , ( i + 1 , r ) . Lưu ý rằng các khoảng thời gian không chồng chéo theo cách xấu nữa! (Sau khi sự thay đổi này, nếu hai khoảng thời gian chồng chéo lên nhau, một là đúng bên trong khác.) Hơn nữa, các cạnh từ l đến r được thay thế bằng một cạnh từ l đến đỉnh chéo tiếp theo là cạnh từ đó đến r ; hai cạnh này được ghép nối ở đỉnh chéo theo cách mà một điểm được chỉ vào và một cạnh được chỉ ra; nói cách khác, hai cạnh cùng hoạt động giống như một cạnh mà chúng đang thay thế.(l,i2)(i+1,r)lrlr

Trong một số ý nghĩa, đặt vào đỉnh chéo này "không bị cắt" hai cạnh (có các khoảng được chồng chéo). Dễ dàng thấy rằng việc thêm đỉnh chéo không thể khiến bất kỳ cạnh bổ sung nào bị cắt chéo. Do đó, chúng ta có thể mở rộng mọi cặp cạnh chéo bằng cách chèn đủ các đỉnh chéo. Kết quả cuối cùng vẫn tương ứng với thể hiện Định hướng đồ thị, nhưng bây giờ danh sách các bộ ba là hợp lệ (các thuộc tính đều dễ dàng xác minh rằng chúng ta đã "bỏ qua" bất kỳ cạnh chéo nào), do đó bổ đề phải áp dụng, các cạnh phải hoạt động như mô tả và sự tương ứng thực sự là một sự tương đương. Nói cách khác, sự giảm này là chính xác.


bằng chứng bổ đề

Bổ đề: đối với danh sách ba lần hợp lệ, các ký tự x , yc phải được đặt chính xác như được chỉ định bởi các bộ ba và cho bất kỳ cặp ba ( 0 , l , r )( 1 , l , r ) , hai ký tự cho bộ ba đó phải được đặt ở các chỉ số lr .xyc(0,l,r)(1,l,r)lr

bằng chứng:

Chúng tôi tiến hành bằng cách cảm ứng trên bộ ba theo chiều dài khoảng. Cụ thể, tuyên bố của chúng tôi là như sau: với bất kỳ k nếu một số bộ ba nào đó có độ dài khoảng k thì ký tự trong bộ ba đó phải được đặt như mô tả trong bổ đề.kk

Trường hợp cơ sở: với k = 0 , bộ ba phải đặt một ký tự x , y hoặc c tại chỉ mục duy nhất bên trong khoảng. Điều này chính xác như được mô tả trong bổ đề.k=0xyc

Trường hợp quy nạp: giả định tuyên bố giữ cho bất kỳ k ít hơn một số k ' . Bây giờ xem xét một số ba với khoảng thời gian dài k ' . Sau đó ba phải có dạng ( i , l , r ) với r = l + k ' - 1i { 0 , 1 } . Bộ ba ( 1 - i , l , r ) cũng phải có mặt. Số lượng bộ ba ( αkkk(i,l,r)r=l+k1i{0,1}(1i,l,r)' , L ' , r ' ) với l l 'r 'r là chính xác r - l + 1 = k ' . Những bộ ba bao gồm gấp ba ( 0 , l , r ) ( 1 , l , r ) nhưng cũng k ' - 2 gấp ba khác có dạng ( α ' , l '(α,l,r)llrrrl+1=k(0,l,r)(1,l,r)k2, R ' ) với l < l 'r ' < r . Những bộ ba khác tất cả đều có khoảng thời gian dài nhỏ hơn k ' , vì vậy tất cả họ đều phải đặt nhân vật của mình như quy định trong Bổ đề. Cách duy nhất để điều này xảy ra là nếu các bộ ba này đặt các ký tự trong mọi chỉ mục bắt đầu từ chỉ số l + 1 và kết thúc ở chỉ số r + 1 . Do đó, hai bộ ba của chúng tôi ( 0 , l , r ) ( 1 , l , r )(α,l,r)l<lr<rkl+1r+1(0,l,r)(1,l,r)phải đặt các ký tự của chúng tại các chỉ số lr , như được mô tả trong bổ đề, kết luận trường hợp quy nạp.lr

Theo cảm ứng, bổ đề là chính xác.


Cảm ơn rất nhiều cho bằng chứng công phu này, và với một ngôn ngữ rất đơn giản! Tôi nghĩ đó là chính xác, điều duy nhất tôi không chắc chắn là tuyên bố rằng "việc thêm đỉnh chéo không thể khiến bất kỳ cạnh bổ sung nào bị vượt qua". Nó không thể là trường hợp đó khoảng ( l , r ) bao gồm một số khoảng thời gian khác ( l " , r " ) với l l "r "r , và bây giờ một trong những ( l , i - 1 )( tôi + 2 ,(l,r)(l′′,r′′)ll′′r′′r(l,i1)r ) vượt qua nó? Có vẻ như quá trình vẫn phải hội tụ vì các khoảng nhỏ hơn, nhưng điều đó cũng không hoàn toàn rõ ràng do việc chèn các đỉnh chéo. Làm thế nào tôi nên nhìn thấy nó? (i+2,r)
a3nm

Nếu l < l ' < r < r ' , sau đó bạn có thể chèn các chỉ số mới cho đỉnh chéo mới ngay bên phải của l ' . Điều này làm cho chỉ số mới ( i ± một chút) để được chính xác những khoảng thời gian được sử dụng để chứa l ' . Cần dễ dàng nhận thấy rằng việc thêm một đỉnh chéo có thể thêm một giao thoa mới với một số khoảng khác chỉ khi các chỉ số mới rơi vào khoảng khác. Nếu l < l < r < r thì các chỉ số mới không rơi vào khoảng (l<l<r<rli±ll<l′′<r′′<rl , r ) . Nếu l < l " < r " < r thì các chỉ số mới có thể rơi vào khoảng thời gian ( l " , r " ) , nhưng chỉ khi l ' đã rơi vào đó(l′′,r′′)l<l′′<r′′<r(l′′,r′′)l
Mikhail Rudoy

(tiếp theo) khoảng thời gian. Trong trường hợp này, bạn không thực sự tạo ra một giao cắt mới, chỉ cần biến một giao lộ cũ với khoảng cũ ( l , r ) thành giao cắt mới với khoảng ( i + gì đó , r )(l,r)(i+something,r)
Mikhail Rudoy

Tôi đoán trong tin nhắn thứ hai của bạn, bạn có nghĩa là "với khoảng cũ ( l , r ) " chứ không phải " ( l , r ) "? Nhưng OK, tôi thấy điều đó: khi bạn thêm đỉnh giao nhau, trường hợp xấu duy nhất sẽ là một khoảng I trùng với một khoảng mới mà không trùng với khoảng tương ứng. Điều này không thể xảy ra đối với các supersets của ( l , r ) hoặc của ( l , r ) : nếu chúng trùng nhau với một khoảng mới thì chúng trùng với khoảng cũ. Tương tự như vậy đối với các tập con của ( l(l,r)(l,r)I(l,r)(l,r), R ) hoặc ( l ' , r ' ) với lý do là bạn giải thích. Vì vậy, tôi đồng ý rằng bằng chứng này có vẻ đúng với tôi. Cảm ơn một lần nữa! (l,r)(l,r)
a3nm

2

@MikhailRudoy là người đầu tiên thể hiện độ cứng NP, nhưng Louis và tôi có một ý tưởng khác, tôi nghĩ tôi có thể phác thảo ở đây vì nó hoạt động hơi khác. Chúng tôi giảm trực tiếp từ CNF-SAT, vấn đề thỏa mãn Boolean cho CNF . Để đổi lấy điều này, ngôn ngữ thông thường L mà chúng ta sử dụng phức tạp hơn.L

Chìa khóa để chương trình có độ cứng là thiết kế một ngôn ngữ L ' cho phép chúng ta đoán một từ và lặp lại nó nhiều lần. Cụ thể, đối với bất kỳ số k của các biến và số m điều khoản, chúng tôi sẽ xây dựng khoảng để đảm bảo rằng tất cả các từ w của L ' mà chúng ta có thể hình phải bắt đầu bằng chữ tùy ý u có độ dài k vào bảng chữ cái { 0 , 1 } (bằng trực giác mã hóa đoán xác định giá trị của các biến), và sau đó từ này u được lặp lại mLkmwLuk{0,1}um lần (mà sau này chúng ta sẽ sử dụng để kiểm tra rằng mỗi mệnh đề được thỏa mãn bằng cách định giá đã đoán).

Để đạt được điều này, chúng tôi sẽ sửa chữa bảng chữ cái A = { 0 , 1 , # , 0 ' , 1 ' } và ngôn ngữ: L ' : = ( 0 | 1 ) * ( # ( 00 ' | 11 ' ) * ) * # ( 0 | 1 ) * . Yêu cầu chính thức phức tạp hơn một chút:A={0,1,#,0,1}L:=(0|1)(#(00|11))#(0|1)

Khẳng định: Đối với bất kỳ số k , m N , chúng ta có thể xây dựng trong ptime một tập hợp các khoảng thời gian như vậy mà từ trong L ' có thể được hình thành với những khoảng thời gian rất chính xác:k,mNL

{ U ( # ( ~ u~ u ' ) # ( u u ' ) ) m # ~ u | u { 0 , 1 } k }

{u(#(u~u~)#(uu))m#u~u{0,1}k}

nơi ~ u biểu thị kết quả của đảo ngược thứ tự của u và trao đổi 0 's và 1 ' s, nơi u ' biểu thị kết quả của việc thêm một nguyên tố với tất cả các chữ trong u , và nơi x y cho hai chữ x của y của chiều dài p là từ có độ dài 2 p được hình thành bằng cách thay thế một chữ cái từ x và một chữ cái từ y .u~u01uuxyxyp2p

Đây là một lời giải thích trực quan về việc xây dựng mà chúng tôi sử dụng để chứng minh điều này. Chúng tôi bắt đầu với các khoảng mã hóa dự đoán ban đầu của u . Đây là tiện ích cho n = 4 (trái) và giải pháp khả thi (phải):

choice gadget

Thật dễ dàng để hiển thị các quan sát sau (bỏ qua L ' cho bây giờ): những lời có thể là chúng ta có thể hình thành với những khoảng thời gian chính xác u # ~ u cho u { 0 , 1 } k . Điều này được thể hiện cơ bản giống như Bổ đề trong câu trả lời của @ MikhailRudoy, ​​bằng cách cảm ứng từ các khoảng thời gian ngắn nhất đến các khoảng thời gian dài nhất: vị trí trung tâm phải chứa # , hai vị trí lân cận phải chứa một 01 1 , v.v.

Chúng ta đã thấy làm thế nào để đoán, bây giờ hãy xem cách nhân đôi nó. Đối với điều này, chúng tôi sẽ dựa vào L ' , và thêm khoảng hơn. Đây là một minh họa cho k = 3 :

duplication gadget

Còn bây giờ lấy L : = ( 0 | 1 ) * ( # ( 00 ' | 11 ' ) * ) * # ( 0 ' | 1 ' ) * . Quan sát làm thế nào, qua # đầu tiên , chúng ta phải liệt kê xen kẽ một lá thư chưa được sơn lót và viết sẵn. Vì vậy, trên tam giác không có dấu gạch ngang, quan sát của chúng tôi ở trên vẫn đứng: mặc dù có vẻ như các khoảng này có nhiều không gian hơn ở bên phải của # đầu tiên, only one position out of two can be used. The same claim holds for the dashed intervals. Now, L further enforces that, when we enumerate an unprimed letter, the primed letter that follows must be the same. So it is easy to see that the possible words are exactly: u#(˜u˜u)#u for u{0,1}k.

Now, to show the claim, we simply repeat this construction m times. Here's an example for k=3 and m=2, using now the real definition of L above the statement of the claim:

duplication gadget, repeated

As before, we could show (by induction on m) that the possible words are exactly the following: u(#˜u˜u#uu)2#˜u for u{0,1}k. So this construction achieves what was promised by the claim.

Thanks to the claim we know that we can encode a guess of a valuation for the variables, and repeat the valuation multiple times. The only missing thing is to explain how to check that the valuation satisfies the formula. We will do this by checking one clause per occurrence of u. To do this, we observe that without loss of generality we can assume that each letter of the word is annotated by some symbol provided as input. (More formally: we could assume that in the problem we also provide as input a word w of length n, and we ask whether the intervals can form a word u such that wu is in L.) The reason why we can assume this is because we can double the size of each interval, and add unit intervals (at the bottom of the picture) at odd positions to carry the annotation of the corresponding even position:

unit annotations

Thanks to this observation, to check clauses, we will define our regular language L to be the intersection of two languages. The first language enforces that the sub-word on even positions is a word in L, i.e., if we ignore the annotations then the word must be in L, so we can just use the construction of the claim and add some annotations. The second language L will check that the clauses are satisfied. To do this, we will add three letters in our alphabet, to be used as annotations: +, , and ϵ. At clause 1im, we add unit intervals to annotate by + the positions in the i-th repetition of u corresponding to variables occurring positively in clause i, and annotate by~ the positions corresponding to negatively occurring variables. We annotate everything else by~ϵ. It is now clear that L can check that the guessed valuation satisfies the formula, by verifying that, between each pair of consecutive # symbols that contain an occurrence of u (i.e., one pair out of two), there is some literal that satisfies the clause, i.e., there must be one occurrence of the subword +1 or of the subword 0.

This concludes the reduction from CNF-SAT and shows NP-hardness of the letter scheduling problem for the language L.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.