Нехай - вектор булевих змінних. Нехай - дві булеві схеми на . Скажіть, що схожий на якщо:C , D x C D
є експоненціально малим, коли намальовано рівномірно з (іншими словами, вони мають майже однаковий функціонал); і,
відрізняються відстані редагування графіків на невелику кількість (відстань їх редагування набагато менша за розмір ланцюга, скажімо, або якась невелика константа), тобто майже всі ворота та дроти збігаються відповідні ворота та провід у , із доданими / видаленими / зміненими лише кількома воротами.
Моя проблема: мені задано ланцюг , і я хочу знати, чи існує схема , схожа на але не ідентична (тобто там, де існує така, що ).
Чи може хтось запропонувати алгоритм вирішення цієї проблеми?
Якщо це допомагає, ми можемо обмежити увагу на ланцюгах , менших за дану схему (тобто ми хочемо знати, чи існує схема така, що менша за , схожа на , і існує такий, що ).
Якщо це допомагає, ви можете додатково припустити, що нам дано відомі хороші тестові випадки такі, що для всі , і ми можемо додатково обмежити увагу лише ланцюгами такими, що для всіх .
Це випливає з практичного застосування, тому якщо ви не можете вирішити цю проблему, сміливо вирішуйте будь-який варіант чи цікавий спеціальний випадок. Наприклад, сміливо інстанціюйте будь-який з параметрів або порогів будь-яким зручним для вас способом. Можна припустити, що схеми не надто великі (розмір поліномів чи щось таке). Не соромтеся замінювати відстань для редагування графіків якоюсь іншою мірою майже відповідності реалізації. Крім того, на практиці розв'язувачі SAT часто напрочуд ефективні в структурованих схемах, що виникають на практиці, тому, ймовірно, добре викликати розв'язувач SAT як підпрограму / оракул (принаймні, якщо ви посилаєтесь на щось на зразок похідного екземпляра SAT від схеми типу ).
Крім того, бракує будь-яких алгоритмів, я також зацікавився б питанням існування: для "середньої" схеми , яка ймовірність існування деякого який відповідає всім критеріям? (Я сподіваюся, що ця ймовірність дуже мала, але я не маю поняття, якщо це так.)D
Практичне застосування полягає в тому, щоб перевірити, чи може ланцюг містити шкідливе заднє / приховане писанка. Гіпотеза про те, як така річ може бути вставлена, іде так. Ми починаємо з "золотої" схеми , яка обчислює потрібну функціональність і не має прихованого заднього проходу. Потім противник робить невелика зміна , щоб ввести прихований чорний хід, отримання модифікованої схеми . Мета заднього куточка - певним чином змінити функцію, обчисленуЯкщо не надто малий, зміна, ймовірно, може бути виявлена випадковим тестуванням, тому супротивник, ймовірно, намагатиметься зберегтиD D C D Pr [ C ( x ) ≠ D ( x ) ] Pr [ C ( x ) ≠ D ( x ) ] C D x i , y i D D ( x i ) = y i i C D C Dдуже мало. Так само, якщо відрізняється від у занадто великій кількості місць, це можна помітити випадковим оглядом ланцюга, тому противник, ймовірно, намагатиметься мінімізувати кількість змін. (І, можливо, існує тестовий набір пар які представляють екземпляри бажаної функціональності, тому ми знаємо, що якою б не була "золота" схема , вона задовольняє для всіх .) Зрештою, нам дається схема (але не "золота" схема ), і ми хочемо знати, чи може бути модифікованою версією деякого, де було внесено модифікацію для введення прихованого заднього куреня подібного роду.