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=A∗A
- x 111 , x 000 ,x111x000
- y 100 , y 010 , y 001 ,y100y010y001
- 00 c 11 , 01 c 10 , 10 c 01 và 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 , y và c 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}(1−i,l,r)
- Nếu ( α , l , r ) và ( α ' , 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<l′≤r′<rl′<l≤r<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′)l≤l′≤r′≤rr−l+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 , y và c 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 ) và ( 1 , l , r ) , hai ký tự cho bộ ba đó phải được đặt ở các chỉ số l và r .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 ) và ( 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 ở l và r , 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 - 1 và i + 2 đối diện (một 0 và 1 1 ) và các ký tự tại i - 24ciAi−1i+201i−2và i + 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 ) và ( 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 ′ và 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<r′l′ri, l , r ) , ( 1 , l , r ) , ( 0 , l ′ , r ′ ) và ( 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,i−1)(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′,i−2)(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 , y và c 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 ) và ( 1 , l , r ) , hai ký tự cho bộ ba đó phải được đặt ở các chỉ số l và r .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 ' - 1 và i ∈ { 0 , 1 } . Bộ ba ( 1 - i , l , r ) cũng phải có mặt. Số lượng bộ ba ( αkk′k′(i,l,r)r=l+k′−1i∈{0,1}(1−i,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 ) và ( 1 , l , r ) nhưng cũng k ' - 2 gấp ba khác có dạng ( α ' , l '(α′,l′,r′)l≤l′≤r′≤rr−l+1=k′(0,l,r)(1,l,r)k′−2, 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 ) và ( 1 , l , r )(α′,l′,r′)l<l′≤r′<rk′l+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ố l và r , 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.