Свідки математичного програмного забезпечення


11

Я, як і багато людей, є захопленим користувачем математичного програмного забезпечення, такого як Mathematica та Maple. Однак мене все більше засмучує безліч випадків, коли таке програмне забезпечення просто дає вам неправильну відповідь без попередження. Це може статися під час виконання всіляких операцій від простих сум до оптимізації серед багатьох інших прикладів.

Мені було цікаво, що можна зробити щодо цієї серйозної проблеми. Необхідний певний спосіб дозволити користувачеві перевірити правильність відповіді, яка дається, щоб він мав певну впевненість у тому, що їм сказано. Якби ви отримали рішення від колеги з математики, вона / він може просто сісти і показати вам свою роботу. Однак у більшості випадків це зробити комп'ютером неможливо. Чи не міг би комп’ютер дати вам простого і легко перевіряемого свідчення правильності їх відповіді? Перевірку, можливо, доведеться робити за допомогою комп’ютера, але, сподіваємось, перевірити алгоритм перевірки буде набагато простіше, ніж перевірити алгоритм для отримання свідка в першу чергу. Коли це було б можливо і як саме це можна було б формалізувати

Отже, підсумовуючи, моє запитання таке.

Чи можна, хоча б теоретично, математичне програмне забезпечення дати короткий перевіряється доказ разом із відповідним запитом?

Тривіальний випадок, коли ми можемо це зробити негайно, - це факторизація цілих чисел курсу або багатьох класичних задач, повних NP (наприклад, Гамільтонова схема тощо).


Чи можете ви навести приклад, коли підготовлена ​​відповідь неправильна? Звичайно, можна створити перевірений доказ правильності обчислень, але такий доказ не потрібно легко перевірити вручну, просто тому, що програмне забезпечення, як правило, використовує високонетривіальні алгоритми, які ефективніші, ніж найбільш інтуїтивні.
Махді Черачі

Я дав два приклади у питанні, але кольори посилань можуть бути нелегкими. Клацніть на "сум" або "оптимізація".

1
Сортуйте те, що робили Мануель Блюм та Сампат Каннан у dl.acm.org/citation.cfm?id=200880 ?
Андрій Бауер

Ви можете поглянути на сертифікаційні алгоритми .
Pratik Deoghare

так, занадто багато символічних програмних систем трактуються як "чорні скриньки", і це також корпоративна стратегія захисту комерційної таємниці. (1) спробуйте альтернативи з відкритим кодом (2) розглянути інженерію програмного забезпечення "найкращою практикою" "тестування одиниць". коротко, ідея полягала б у створенні "перевірок обґрунтованості" результатів, наприклад, замінивши відомі значення, інші маніпуляції, звороти тощо для добре сконструйованих тестів, навряд чи формула і тест зазнали б невдачі таким чином, який би дав "хибний позитив".
vzn

Відповіді:


5
  1. Поняття "свідків" або "підтверджуваних доказів" не зовсім нове: як зазначено в коментарях, шукайте поняття "довідка". На думку прийшли три приклади, їх більше (у коментарях та інших місцях):

    • Курт Мелхорн описав у 1999 році аналогічну проблему алгоритмів обчислювальної геометрії (наприклад, незначні помилки в координатах можуть призвести до великих помилок в результатах деякого алгоритму), вирішені аналогічно в бібліотеці Leda , наполягаючи на тому, що кожен алгоритм видає "сертифікат" своєї відповіді на додаток до самої відповіді.

    • Демейне, Лопес-Ортіз і Манро в 2000 р. Використовували поняття сертифікатів (вони називають їх «докази»), щоб показати адаптивну нижню межу для обчислення об'єднання та перетину (і різниці, але це тривіально) відсортованих множин. Не виключайте їх роботи, оскільки вони не використовували сертифікати для захисту від помилок при обчисленні: вони показали, що, хоча сертифікат може бути лінійним за розміром екземпляра в гіршому випадку, він часто коротший, а значить, його можна "перевірити "в підлінійний час (з урахуванням випадкового доступу до входу як відсортований масив або B-дерево), і, зокрема, у час, менший, ніж потрібно для обчислення такого сертифіката.

    • Я використовую концепцію сертифікатів для різних інших проблем з часу, коли бачив Іана Манро, який представляє їхню реалізацію на Alenex 2001 , і, зокрема, для перестановок (вибачення за безсоромний штекер, ще одна), де сертифікат коротший у кращому випадку ніж у гіршому чи середньому випадку, що дає стиснуту структуру даних для перестановок. Знову ж таки перевірка сертифіката (тобто замовлення) займає максимум лінійний час, менше, ніж його обчислення (тобто сортування).

  2. Ця концепція не завжди корисна для перевірки помилок: є проблеми, коли перевірка сертифіката займає стільки ж часу, скільки його виготовлення (або просто надання результату). На думку приходять два приклади, один тривіальний та один складний, Блум та Каннан (згадані в коментарях) дають інші.

    • нн
    • Сертифікат на опуклий корпус у двох та трьох вимірах, якщо точки задані у випадковому порядку, потребує стільки ж бітів для кодування, скільки порівнянь для обчислення [FOCS 2009] (інший безсоромний штекер).

Бібліотека Leda - це найбільш загальне зусилля (яке я знаю) для того, щоб зробити детерміновані алгоритми створення сертифікатів нормою на практиці. Доповідь Блума і Каннана - це найкраще зусилля, яке я бачив, щоб зробити його нормою теоретично, але вони показують межі цього підходу.

Сподіваюся, це допомагає ...


Дякую, що дуже цікаво. Стосовно вашого пункту 2. Я думаю, що я говорю про щось трохи інше. Проблема полягає не в помилках у коді, а в алгоритмах, які, як ми знаємо, можуть дати неправильну відповідь. Крім того, на мирському рівні я навіть не знаю, як виглядатиме корисний сертифікат для багатьох математичних функцій. Наприклад, для нескінченної суми або, скажімо, мінімізації функції.

Щоб було трохи чіткіше. Здається, що важко розробити доказово правильні алгоритми для багатьох математичних задач. Однак ми живемо з алгоритмами, які можуть помилитися, не попереджаючи нас (а насправді вони є помилковими) з практичних причин. Сподівання, що не важко розробити доказово правильну перевірку правильності для одного і того ж набору проблем.

Я далекий від своєї експертизи, але я вважав, що помилки в обчисленні були, як правило, спричинені помилками округлення з проміжними результатами (це було явно так у прикладах, що мотивують Leda) щодо основних операцій (множення, поділи тощо), а не помилок в алгоритмах. Я б міг подумати, що такі алгебраїчні системи, як клен і матлаб, уникають таких :(
Джеремі

Це цікаве запитання, і, можливо, хтось тут знає напевно .. однак багато невірних відповідей, про які я говорю, не для чисельних обчислень, тому це означає принаймні prima facie, що проблем більше, ніж ви описуєте. Я не знаю складності обчислювальних обмежень / нескінченних сум тощо. Але я припускаю, що в цілому вони є нерозв'язними в гіршому випадку, тому евристика, яка іноді дає неправильну відповідь, потрібна / корисна. Математика.stackexchange.com/ questions/tagged/bugs не є інформативною , щоб відчути те, що піде не так.

Теоретичний CS має концепцію самоперевірки, яка стосується багатьох проблем лінійної алгебри. Однією з основних ідей є те, що для багатьох проблем рішення можна перевірити (можливо, з невеликою кількістю додаткової інформації) простіше, ніж це можна обчислити. Дивіться, наприклад, https://doi.org/10.1016/0022-0000(93)90044-W .
Ніл Янг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.