Quyết định xem một mạch NC tính toán hoán vị hay không


27

Tôi muốn hỏi về một trường hợp đặc biệt của câu hỏi Quyết định nếu một mạch NC 0 đã cho tính toán một hoán vị bởi QiCheng đã không được trả lời.

Mạch Boolean được gọi là mạch NC 0 k nếu mỗi cổng đầu ra về mặt cú pháp phụ thuộc vào tối đa k cổng đầu vào. (Chúng tôi nói rằng một cổng đầu ra g về mặt cú pháp phụ thuộc vào một cổng đầu vào g ′ khi có một đường dẫn từ g đến g trong mạch như được xem như một biểu đồ chu kỳ có hướng.)

Trong câu hỏi đã nói ở trên, QiCheng đã hỏi về sự phức tạp của vấn đề sau, trong đó k là hằng số:

Ví dụ : Một NC 0 k mạch với n đầu vào -bit và n đầu ra -bit.
Câu hỏi : Mạch đã cho có tính toán một hoán vị trên {0, 1} n không? Nói cách khác, hàm được tính bởi mạch có phải là một mệnh đề từ {0, 1} n đến {0, 1} n không?

Như Kaveh đã nhận xét về câu hỏi đó, dễ dàng nhận thấy rằng vấn đề nằm ở coNP. Trong một câu trả lời, tôi đã chỉ ra rằng vấn đề là coNP-đầy đủ cho k = 5 và nó nằm trong P với k = 2.

Câu hỏi . Độ phức tạp của k = 3 là gì?

Làm rõ vào ngày 29 tháng 5 năm 2013 : Hoán vị hoán vị trên {0, 1} n có nghĩa là ánh xạ phỏng đoán từ {0, 1} n sang chính nó. Nói cách khác, vấn đề hỏi liệu mọi chuỗi n -bit có phải là đầu ra của mạch đã cho cho một số chuỗi đầu vào n -bit không.


1
Lưu ý cá nhân: Khi tôi đăng câu trả lời cho câu hỏi của QiCheng, tôi đã làm như vậy chỉ vì vấn đề này có vẻ thú vị, không có bất kỳ ứng dụng cụ thể nào trong tâm trí. Vài tháng sau đó, tôi đã ở trong một tình huống mà tôi phải giải thích với ai đó rằng điều đó thật xa vời để quyết định xem một chương trình nhất định có tính toán hoán vị hay không. Nhờ câu hỏi của QiCheng, tôi đã có một ví dụ hoàn hảo (thật trùng hợp!). Sau đó, tôi trở nên tò mò hơn về các trường hợp k = 3 và k = 4. Tôi nghi ngờ rằng trường hợp k = 3 đã hoàn thành coNP, nhưng tôi chưa thể chứng minh được.
Tsuyoshi Ito

vấn đề này dường như là một trường hợp cụ thể của sự cố Mạch Pigeonhole được xác định bởi Papadimitriou ( scTHERirect.com/science/article/pii/S0022000005800637 ) hoàn toàn dành cho PPP liên quan đến việc giảm thời gian giữa các vấn đề tìm kiếm.
Marcos Villagra

@Marcos Villagra: Cảm ơn bạn đã bình luận, nhưng tôi e rằng bằng cách nói trường hợp cụ thể của Cameron, bạn đang thay đổi định nghĩa về vấn đề Mạch Pigeonhole đáng kể. Một tính chất quan trọng của vấn đề Mạch Pigeonhole là nó là một vấn đề tìm kiếm tổng thể , trong khi đó vấn đề hiện tại (được xem là vấn đề tìm kiếm cho hai đầu vào tạo ra cùng một đầu ra) không phải là vấn đề tìm kiếm tổng.
Tsuyoshi Ito

Câu trả lời:


3

Vấn đề với là coNP-hard (và do đó coNP-hoàn thành).k=3

Để chứng minh điều này, tôi sẽ giảm từ 3-SAT xuống phần bù của vấn đề này (đối với mạch , mạch có thực hiện chức năng không tính toán).NC30

Đầu tiên một định nghĩa sơ bộ sẽ hữu ích:

Chúng tôi xác định biểu đồ được gắn nhãn là biểu đồ có hướng, một số cạnh có nhãn bằng chữ, với đặc tính là mọi đỉnh đều có một cạnh đến không được gắn nhãn, một cạnh đến được gắn nhãn hoặc hai cạnh đến không được gắn nhãn.

Giảm

Giả sử chúng ta có một công thức 3-SAT bao gồm mệnh đề, mỗi mệnh đề chứa ba chữ. Bước đầu tiên là xây dựng một biểu đồ có nhãn từ . Biểu đồ được gắn nhãn này chứa một bản sao của tiện ích sau (xin lỗi vì sơ đồ khủng khiếp) cho mỗi mệnh đề trong . Thay vào đó, ba cạnh có nhãn L1, L2 và L3 được dán nhãn bằng chữ trong mệnh đề.m G φ φϕmGϕϕ

   |
   |               |
   |               |
   |               O<-----\
   |               ^      |
   |               |      |
   |               |      |
   |        /----->O      |
   |        |      ^      |
   |        |      |      |
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |L1    |L2    |L3
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |      |      |
   |        \------O------/
   |               ^
   |               |
   |               |
   |               O
   |               ^
   |               |
   |

Các tiện ích (một cho mỗi mệnh đề) đều được sắp xếp theo một chu kỳ lớn với phần dưới cùng của một tiện ích liên kết với đỉnh của kế tiếp.

Lưu ý rằng sự sắp xếp các tiện ích này trên thực tế tạo thành một biểu đồ được dán nhãn (mọi đỉnh đều có 1 hoặc 2 chỉ có các cạnh dẫn đến các đỉnh của indegree 1 được dán nhãn).

Từ công thức và đồ thị có nhãn (được xây dựng từ ), chúng tôi tiếp theo xây dựng một (điều này sẽ kết luận việc giảm). Số lượng đầu vào và đầu ra cho mạch này là nơi là số biến trong và là số đỉnh của . Một đầu vào và một đầu ra được gán cho mỗi biến trong và cho mỗi đỉnh trong . Nếu là một số biến trong thì chúng ta sẽ đề cập đến các bit đầu vào và đầu ra được liên kết với làG ϕ N C 0 3 n + v n ϕ v G ϕ G x ϕ x x iϕGϕNC30n+vnϕvGϕGxϕx x o u t ll=x l i n = x i n ll=¬x l i n =¬ x i n vGv v i n v o u txin và . Hơn nữa, nếu là một chữ có thì chúng ta xác định và nếu là một chữ có thì chúng ta xác định . Cuối cùng, nếu là một số đỉnh trong thì chúng ta sẽ đề cập đến các bit đầu vào và đầu ra được liên kết với là và .xoutll=xlin=xinll=¬xlin=¬xinvGvvinvout

Có bốn loại bit đầu ra:

1) Với mọi biến in , . Lưu ý rằng đầu ra này chỉ phụ thuộc vào một bit đầu vào.ϕ x o u t = x i nxϕxout=xin

2) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác một cạnh đến sao cho cạnh đó không được gắn nhãn, . Lưu ý rằng đầu ra này chỉ phụ thuộc vào hai bit đầu vào.( u , v ) v o u t = v i nu i nv(u,v)vout=vinuin

3) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác một cạnh đến sao cho cạnh đó được gắn nhãn , . Lưu ý rằng đầu ra này chỉ phụ thuộc vào ba bit đầu vào vì chỉ phụ thuộc vào cho bất kỳ biến được sử dụng trong chữ .( u , v )v(u,v)v o u t = v i n( u i nl i n ) l i n x i n x llvout=vin(uinlin)linxinxl

4) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác hai cạnh đến và , . Lưu ý rằng đầu ra này chỉ phụ thuộc vào ba bit đầu vào.( u , v ) ( w , v ) v o u t = v i n( u i nw i n )v(u,v)(w,v)vout=vin(uinwin)

Vì trong mọi trường hợp, đầu ra chỉ phụ thuộc vào ba đầu vào, mạch chúng tôi xây dựng nằm trong như mong muốn.NC30

Trường hợp chứng minh đúng 1: là thỏa đángϕ

Giả sử tồn tại một nhiệm vụ thỏa mãn cho . Sau đó xây dựng hai bộ giá trị sau cho các đầu vào.ϕ

1) Các đầu vào được liên kết với các biến của được đưa ra các giá trị của phép gán thỏa mãn. Tất cả các đầu vào được liên kết với các đỉnh của được cho giá trị 0.GϕG

2) Các đầu vào được liên kết với các biến của được đưa ra các giá trị của phép gán thỏa mãn. Hãy xem xét các đỉnh trong một tiện ích điều khoản trong . Nếu giá trị của nhãn là 0 (dưới sự phân công thỏa mãn), đầu vào được liên kết với đỉnh ở điểm cuối đích của cạnh được gắn nhãn đó sẽ có giá trị 0. Nếu cả L1 và L2 có giá trị 0 thì giá trị thứ hai đỉnh-đỉnh trong tiện ích (như hình trên) cũng được cho giá trị bằng 0. Tất cả các đỉnh khác được cho giá trị là 1.GϕG

Chúng tôi muốn chỉ ra rằng hai bộ đầu vào này mang lại đầu ra giống hệt nhau và do đó mạch không mã hóa một hoán vị.NC30

Hãy xem xét bốn loại bit đầu ra:

1) Với mọi biến in , . Vì là giống nhau cho cả hai bộ đầu vào, nên các đầu ra của mẫu này sẽ luôn giống nhau trên hai bộ đầu vào.ϕ x o u t = x i n x i nxϕxout=xinxin

2) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác một cạnh đến sao cho cạnh đó không được gắn nhãn, . Kiểm tra tiện ích có các bản sao tạo thành , chúng ta thấy rằng tất cả các cạnh như vậy chỉ bao gồm các cặp đỉnh có giá trị đầu vào luôn là 1s dưới bộ đầu vào thứ hai. Do đó trong tập hợp đầu vào đầu tiên và dưới bộ đầu vào thứ hai. Do đó, các đầu ra của mẫu này sẽ luôn giống nhau (và trên thực tế là 0) trên hai bộ đầu vào.( u , v )v(u,v) G v o u tvout=vinuinGv o u t = v i nu i n = 1 1 = 0vout=vinuin=00=0vout=vinuin=11=0

3) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác một cạnh đến sao cho cạnh đó được gắn nhãn , . Nếu sai dưới sự gán thì là 0 dưới cả hai bộ đầu vào; sau đó trong cả hai bộ đầu vào. Nếu đúng dưới sự gán, là 0 dưới tập đầu vào đầu tiên và 1 dưới số thứ hai; cũng lưu ý rằng trong tiện ích, các cạnh có nhãn duy nhất có các đỉnh luôn có( u , v ) l v o u t l v i n ( u , v ) u uv(u,v)ll v i n i n = 1 u i n = v i n l v o u tvout=vin(uinl)lvinvout=vin(uinl)=vin(uin0)=vin=0lvin(u,v)uuin=1 dưới bộ đầu vào thứ hai. Kết quả là chúng ta thấy rằng trong cả hai bộ đầu vào, bất cứ khi nào là đúng; sau đó . Do đó, các đầu ra của mẫu này sẽ luôn giống nhau (và trên thực tế là 0) trên hai bộ đầu vào.uin=vinlvout=vin(uinl)=vin(uin1)=vinuin=vinvin=0

4) Với mỗi đỉnh trong biểu đồ được gắn nhãn có chính xác hai cạnh đến và , . Có hai đỉnh như vậy trong mỗi tiện ích. Đỉnh trên cùng và đỉnh thứ hai từ đỉnh. Chúng tôi xem xét hai trường hợp riêng biệt.( u , v ) ( w , v ) v o u t = v i n( u i nw i n )v(u,v)(w,v)vout=vin(uinwin)

4a) Khi là đỉnh trên cùng thứ hai trong một tiện ích, và là hai điểm cuối đích của các cạnh có nhãn L1 và L2. Trong bộ đầu vào đầu tiên, . Trong bộ đầu vào thứ hai, là 0 iff L1 có giá trị 0 theo phép gán thỏa mãn (còn gọi là ); tương tự, là 0 iff L2 có giá trị 0 theo phép gán thỏa mãn (aka ); và cuối cùng, được định nghĩa là 0 iff cả L1 và L2 đều có giá trị 0 (còn gọi là ). Do đó, dưới bộ đầu vào thứ hai,u w v o u t = v i n( u i nw i n ) = 0 ( 0 0 ) = 0 u i n u i n = L 1 w i n w i n = L 2 v i n v i n = L 1 L 2vuwvout=vin(uinwin)=0(00)=0uinuin=L1winwin=L2vinvin=L1L2vout=vin(uinwin)=(L1L2)(L1L2)=0 . Do đó, các đầu ra của mẫu này sẽ luôn giống nhau (và trên thực tế là 0) trên hai bộ đầu vào.

4b) Khi là đỉnh trên cùng trong một tiện ích, là đỉnh trên cùng thứ hai và là điểm cuối đích của cạnh có nhãn L3. Trong bộ đầu vào đầu tiên, . Trong bộ đầu vào thứ hai, là 0 iff cả L1 và L2 có giá trị 0 (còn gọi là ); là 0 iff L3 có giá trị 0 (còn gọi là ); và cuối cùng là . Do đó, dưới bộ đầu vào thứ hai, trong đó đẳng thứcu w v o u t = v i n( u i nw = v ivuw u i n u i n( u i n w i n )=1((L1L2)vout=vin(uinwin)=0(00)=0uin w i n w i n =L3 v i n =1 v o u tuin=L1L2winwin=L3vin=1( L 1 L 2 L 3 ) = 1vout=vin(uinwin)=1((L1L2)L3)=1(L1L2L3)=11=0(L1L2L3)=1 giữ theo định nghĩa trong một phép gán thỏa mãn cho mọi mệnh đề. Do đó, các đầu ra của mẫu này sẽ luôn giống nhau (và trên thực tế là 0) trên hai bộ đầu vào.

Rõ ràng, chúng ta thấy rằng các đầu ra giống nhau cho hai bộ đầu vào khác nhau và do đó mạch thực hiện chức năng không tính toán.NC30

Trường hợp bằng chứng chính xác 2: là không thỏa đángϕ

Giả sử bây giờ không tồn tại sự phân công thỏa mãn cho . Sau đó, giả sử vì mâu thuẫn rằng một số hai bộ đầu vào khác nhau dẫn đến mạch có cùng một đầu ra.N C 0 3ϕNC30

Rõ ràng, hai đầu vào phải có cùng giá trị cho cho mọi biến in . Vì vậy, bây giờ chúng ta có thể đề cập rõ ràng đến giá trị của . x ϕ xxinxϕx

Xác định là tập hợp các đỉnh trong sao cho khác nhau trong hai bộ giá trị đầu vào.v G v i nSvGvin

Chúng tôi sẽ chứng minh các bổ đề sau đây:

Bổ đề 1: Nếu trong một số tiện ích cả ba đỉnh tại điểm cuối Mục tiêu của cạnh nhãn đang không ở trong thì không có đỉnh trên ba trong tiện ích đang ở .SSS

Bổ đề 2: Nếu trong một số tiện ích đỉnh đầu không có trong sau đó trong tiện ích tiếp theo lên không đỉnh là .SSS

Do các tiện ích tạo thành một vòng lặp, điều này ngụ ý rằng nếu trong bất kỳ tiện ích nào, cả ba đỉnh tại điểm cuối đích của các cạnh được gắn nhãn đều không nằm trong thì không có đỉnh nào trong nằm trong (nói cách khác là trống).G S SSGSS

Tuy nhiên, hãy xem xét một tiện ích được liên kết với một mệnh đề không hài lòng. Trong tiện ích này, cả ba nhãn đều có giá trị 0. Chúng tôi biết rằng cạnh có nhãn phải thỏa mãn , nhưng , vì vậy . Do đó, vì đầu ra giống nhau cho cả hai đầu vào, nên các giá trị của cũng phải giống nhau trên hai bộ đầu vào. Nói cách khác, chúng tôi đã chỉ ra rằng không nằm trong( u , v ) L v(L1L2L3)(u,v)LL=00)=vout=vin(uinL)L=0 v i n v S Svout=vin(uinL)=vin(uin0)=vin0=vinvinvS. Như vậy chúng ta thấy rằng trong tiện ích này đặc biệt, ba đỉnh tại điểm cuối Mục tiêu của cạnh nhãn đang không ở trong .S

Kết quả là, chúng tôi kết luận rằng trống. Tuy nhiên, điều này ngụ ý rằng giữa hai bộ đầu vào, không có sự khác biệt, điều này mâu thuẫn với giả định rằng các bộ đầu vào này là khác nhau. Kết quả là, chúng ta thấy rằng hàm được ban hành bởi mạch là tiêm truyền và do đó là một mệnh đề.N C 0 3SNC30

Tất cả chỉ còn lại là để chứng minh bổ đề.

Để làm điều này, chúng tôi lưu ý rằng đối với mọi loại đỉnh trong (indegree 1 có nhãn, indegree 1 không có nhãn và indegree 2), nếu tất cả các cạnh đến từ các đỉnh không thuộc thì đỉnh trong câu hỏi cũng không nằm trong . Điều này là do trong cả ba trường hợp trong đó là một số chức năng của các đầu vào được liên kết với các biến và / hoặc đỉnh có cạnh với . Do tất cả các đỉnh như vậy không nằm trong theo giả định, nên giá trị của phải giống nhau dưới cả hai bộ đầu vào. Do đó cũng giống nhau trong cả hai bộ đầu vào. Nói cách khácSGSv o u t = v i nX X vSvout=vinXXvX v i n = v o u tX v SSXvin=voutXvkhông có trong .S

Bây giờ chúng ta có quy tắc rằng một đỉnh không nằm trong bất cứ khi nào tất cả các tiền thân của nó không ở , các bổ đề tuân theo đơn giản bằng cách áp dụng quy tắc nhiều lần vào sơ đồ tiện ích ở trên.SSS


-1

Không phải câu trả lời mà tác giả đang tìm kiếm, hãy xem những bình luận làm rõ "hoán vị" là gì trong bối cảnh này.

Tôi đã tìm ra kích thước của tập hợp thống trị tối thiểu cho bản tóm tắt bao gồm nhóm hoán vị monogen: https://oeis.org/A186202

Tất cả bạn phải làm là kiểm tra một thành viên của mỗi phân tách chu kỳ chính.

Đối với mỗi chu kỳ chính, cần mã hóa các phần tử là (10101010 ...), sau đó (01010101 ..)?

------ Làm rõ ------ Mục tiêu của phương pháp này là mô hình hóa các trường hợp thử nghiệm 2 ^ n của bạn dưới dạng sơ đồ. Nếu một trường hợp thử nghiệm thành công ngụ ý một trường hợp thử nghiệm thành công khác, thì bạn chỉ phải kiểm tra tập hợp thống trị tối thiểu của sơ đồ không gian thử nghiệm này. Trong không gian hoán vị, OEIS A186202 là mức tối đa bạn phải kiểm tra để phát hiện một nhóm con không tầm thường hoặc chứng minh không tồn tại; con số này vẫn còn lớn nhưng nhỏ hơn nhiều so với n!.

- Làm phiền-- Bằng cách sử dụng các số 0 n và 1 trong số lần lặp n, bạn có thể phát hiện hoán vị cố định mà bạn đang tìm kiếm. Sau đó trong O (n {(n-1) \ select (k-1)} (2 ^ (k-1)), bạn có thể kiểm tra rằng mọi bộ biến (k-1) không ảnh hưởng đến từng chỉ số của shuffle Vì k cố định là đa thức. Tôi có thiếu thứ gì không?


Hừm. Không chắc chắn nếu (01) *, (10) * là đủ. Bạn có thể phải thử tất cả các cấu hình 2 ^ p cho mỗi chu kỳ chính.
Chad Brewbaker

2
Xin lỗi, Chad, bạn đã mất tôi. Bạn có biết rằng câu hỏi đang hỏi liệu hàm này có phải là tính từ không? (Có hàm tính toán như vậy.) Không hỏi liệu các bit đầu ra có phải là hoán vị (sắp xếp lại) các bit đầu vào hay không - đó có thể được trả lời đơn giản hơn bằng cách chạy mạch trên tất cả các đầu vào có thể có số không và một. n - 1 1(2n)!n11
DW

2
Chad, vâng, tôi tin rằng bạn có thể đang thiếu một cái gì đó. Người đăng đang hỏi liệu hàm có phải là hàm phỏng đoán hay không (nghĩa là không tồn tại sao cho và ). Anh ấy / cô ấy không hỏi liệu hàm hoán vị (xáo trộn / sắp xếp lại / sắp xếp lại) các bit đầu vào hay không. Bạn có thấy sự khác biệt? Tôi nghi ngờ bạn đã trả lời sai câu hỏi. x , x { 0 , 1 } n C ( x ) = C ( x ) x x CC:{0,1}n{0,1}nx,x{0,1}nC(x)=C(x)xxC
DW

2
Cảm ơn bạn đã cố gắng giúp đỡ, nhưng như DW đã giải thích, tôi sợ rằng câu hỏi bạn trả lời khác với câu hỏi tôi đã hỏi. Một hoán vị trên {0,1} ^ n có nghĩa là một hàm tính toán từ {0,1} ^ n với chính nó và nó không có nghĩa là sắp xếp lại các bit n.
Tsuyoshi Ito

3
Chad, bạn có phiền khi xóa câu trả lời này hay ít nhất là thêm một ghi chú lên đầu rằng đây không phải là câu trả lời của Tsuyoshi?
Kaveh
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.