Như đã lưu ý ở đây trước đây, ví dụ của Tardos bác bỏ rõ ràng bằng chứng; nó cung cấp một hàm đơn điệu, đồng ý với CLIQUE trên T0 và T1, nhưng nằm trong P. Điều này sẽ không thể thực hiện được nếu bằng chứng là chính xác, vì bằng chứng cũng áp dụng cho trường hợp này. Tuy nhiên, chúng ta có thể xác định sai lầm? Đây là, từ một bài đăng trên blog của lipton, nơi dường như là nơi chứng minh thất bại:
Lỗi đơn là một điểm tinh tế trong chứng minh Định lý 6, cụ thể là ở Bước 1, trên trang 31 (và cả 33, trong đó trường hợp kép được thảo luận) - một tuyên bố dường như rõ ràng rằng chứa tất cả các mệnh đề tương ứng có trong vv, có vẻ sai. C N F ′ ( g )C′gCNF′(g)
Để giải thích chi tiết hơn về vấn đề này, chúng ta cần đi sâu vào phương pháp chứng minh và xấp xỉ của Berg và Ulfberg, trong đó đưa ra bằng chứng ban đầu của Razborov về độ phức tạp đơn điệu theo cấp số nhân của CLIQUE về các chuyển đổi DNF / CNF. Đây là cách tôi nhìn thấy nó:
Đối với mỗi nút / cổng của mạch logic (chỉ chứa các cổng OR / AND nhị phân), một dạng bình thường kết hợp , một dạng bình thường phân biệt và các hàm xấp xỉ và là đính kèm. và chỉ đơn giản là các hình thức bình thường phân biệt và kết hợp tương ứng của đầu ra cổng. và cũng là các hình thức phân biệt và kết hợp, nhưng của một số chức năng khác, "xấp xỉ" đầu ra cổng. Tuy nhiên, chúng được yêu cầu có số lượng biến trong mỗi đơn thức choβ C N F ( g ) D N F ( g ) C k g D r g C N F D N F D r g C k g D r g C k ggβCNF(g)DNF(g)CkgDrgCNFDNFDrgCkgDrg(nhỏ hơn một hằng số r) và trong mỗi mệnh đề cho (nhỏ hơn một hằng số k).Ckg
Có một khái niệm về "lỗi" được đưa ra với phép tính gần đúng này. Lỗi này được tính như thế nào? Chúng tôi chỉ quan tâm đến một số tập hợp T0 của các đầu vào trong đó tổng hàm của chúng tôi lấy giá trị 0 và T1 của các đầu vào mà tổng hàm của chúng tôi lấy giá trị 1 (một "lời hứa"). Bây giờ tại mỗi cổng, chúng tôi chỉ xem xét các đầu vào đó từ T0 và T1, được tính toán chính xác (bởi cả và , đại diện cho cùng một chức năng - đầu ra của cổng trong ) ở đầu ra cổng và xem có bao nhiêu lỗi / lỗi đối với vàC N F ( g ) g β C k g D r g C k g D r g C k g C k g D r gDNF(g)CNF(g)gβCkgDrg, so với điều đó. Nếu cổng là kết hợp, thì đầu ra cổng có thể tính toán thêm đầu vào từ T0 một cách chính xác (nhưng các đầu vào được tính toán chính xác từ T1 có thể bị giảm). Đối với , được định nghĩa là một kết hợp đơn giản, tuy nhiên không có lỗi mới nào trên tất cả các đầu vào này. Bây giờ, được định nghĩa là công tắc CNF / DNF của , do đó có thể có một số lỗi mới trên T0, xuất phát từ công tắc này. Trên T1 cũng vậy, không có lỗi mới nào trên - mỗi lỗi phải xuất hiện trên một trong hai đầu vào cổng và tương tự trên , công tắc không đưa ra lỗi mới trên T1. Phân tích cho cổng OR là kép.CkgDrgCkgCkgDrg
Vì vậy, số lỗi cho các xấp xỉ cuối cùng được giới hạn bởi số lượng cổng trong , nhân với số lỗi tối đa có thể có do công tắc CNF / DNF (đối với T0) hoặc bởi công tắc DNF / CNF (đối với T1). Nhưng tổng số lỗi phải là "lớn" trong ít nhất một trường hợp (T0 hoặc T1), vì đây là thuộc tính của các dạng thông thường kết hợp dương với các mệnh đề giới hạn bởi , đó là cái nhìn sâu sắc chính về bằng chứng ban đầu của Razborov (Bổ đề 5 trong bài báo của Blum).kβk
Vậy Blum đã làm gì để đối phó với các tiêu cực (được đẩy đến mức đầu vào, vì vậy mạch vẫn chỉ chứa các cổng OR / AND nhị phân)?β
Ý tưởng của anh ấy là tạo ra các chuyển đổi CNF / DNF và DNF / CNF một cách hạn chế, chỉ khi tất cả các biến đều dương. Sau đó, các thiết bị chuyển mạch sẽ hoạt động CHÍNH XÁC như trong trường hợp của Berg và Ulfberg, đưa ra cùng một lượng lỗi. Hóa ra đây là trường hợp duy nhất cần được xem xét.
Vì vậy, anh ta đi theo dòng của Berg và Ulfberg, với một vài nét riêng biệt. Thay vì gắn , , và vào mỗi cổng của mạch , anh ta đính kèm các sửa đổi của mình, , , và , tức là các dạng bình thường phân biệt và kết hợp "giảm" mà anh ta xác định khác với vàD N F ( g ) C k g D r g g β C N F ′ ( g ) D N F ′ ( g ) C ′ k g D ′ r g C N F ( g ) D N F ( g ) C ′ r g D ′ rCNF(g)DNF(g)CkgDrggβCNF′(g)DNF′(g)C′kgD′rgCNF(g)DNF(g)bằng "quy tắc hấp thụ", loại bỏ các biến bị phủ định khỏi tất cả các mệnh đề / mệnh đề hỗn hợp (ông cũng sử dụng cho hoạt động mục đích này được ký hiệu là R, loại bỏ hoàn toàn một số mệnh đề / mệnh đề; như chúng ta đã thảo luận trước đây, định nghĩa hơi không chính thức của ông về R không thực sự là vấn đề , R có thể được làm chính xác để nó được áp dụng tại mỗi cổng nhưng những gì bị loại bỏ không chỉ phụ thuộc vào hai đầu vào trước mà còn trên toàn bộ mạch dẫn đến cổng đó) và các xấp xỉ của chúng và , mà anh ấy cũng giới thiệu.C′rgD′rg
Ông kết luận, trong Định lý 5, đối với hàm đơn điệu, giảm và sẽ thực sự tính 1 và 0 trên các tập hợp T1 và T0, tại nút gốc (đầu ra của nó là đầu ra của toàn bộ hàm trong ). Định lý này là, tôi tin, đúng. D N F ' g 0 βCNF′DNF′g0β
Bây giờ đến việc đếm lỗi. Tôi tin rằng các lỗi tại mỗi nút có nghĩa là được tính bằng cách so sánh giảm và (hiện có thể là hai hàm khác nhau), với và như ông đã định nghĩa chúng. Các định nghĩa về xấp xỉ các định nghĩa vẹt của và (Bước 1) khi trộn các biến với các biến bị phủ định, nhưng khi anh ta xử lý các biến dương, anh ta sử dụng công tắc như trong trường hợp của Berg và Ulfberg (Bước 2). Và thực tế, trong Bước 2, anh ta sẽ giới thiệu cùng một số lỗi có thể xảy ra như trước đây (đó là cùng một công tắc và tất cả các biến liên quan đều dương).D N F ' ( g ) C ' r g D ' k g C N F ' D N F 'CNF′(g)DNF′(g)C′rgD′kgCNF′DNF′
Nhưng bằng chứng là sai ở Bước 1. Tôi nghĩ Blum đang nhầm lẫn , , điều thực sự đến, như anh ta đã định nghĩa chúng, từ các xấp xỉ trước đó (đối với cổng , ), với các phần tích cực của và . Có một sự khác biệt và do đó, câu lệnh " vẫn chứa tất cả các mệnh đề có trong trước khi gần đúng cổng g sử dụng mệnh đề trong hoặc " sai nói chung.γ 2 h 1 h 2 C N F ′ β ( h 1 ) C N F ′ β ( h 2 ) C ′ g C N F ′ β ( g ) γ ′ 1 γ ′ 2γ1γ2h1h2CNF′β(h1)CNF′β(h2)C′gCNF′β(g)γ′1γ′2