Вступ
Алгоритми стали всюдисущими. Вони оптимізують наші маршрути, обробляють платежі та координують потік інтернет-трафіку. Здається, що для кожної проблеми, яку можна сформулювати в точних математичних термінах, існує алгоритм, який може її вирішити, принаймні в принципі.
Але це не так — деякі, здавалося б, прості проблеми неможливо розв’язати алгоритмічно. Піонер-інформатик Алан Тюрінг доведений існування таких «необчислюваних» проблем майже століття тому, в тій самій статті, де він сформулював математична модель обчислень який започаткував сучасну інформатику.
Тьюрінг довів цей новаторський результат, використовуючи контрінтуїтивну стратегію: він визначив проблему, яка просто відкидає будь-які спроби її вирішити.
«Я запитую вас, що ви робите, а потім кажу: «Ні, я зроблю щось інше», — сказав Рахул Іланго, аспірант Массачусетського технологічного інституту, який вивчає теоретичну інформатику.
Стратегія Тьюринга ґрунтувалася на математичній техніці під назвою діагоналізація, яка має видатну історію. Ось спрощений опис логіки його доказу.
Теорія струн
Діагоналізація походить від хитрого трюку для вирішення повсякденної проблеми, яка включає в себе рядки бітів, кожен з яких може бути 0 або 1. Маючи список таких рядків, усі однаково довгі, чи можна створити новий рядок, якого немає в список?
Найбільш простою стратегією є розгляд кожного можливого рядка по черзі. Припустимо, у вас є п'ять рядків, кожна з яких має п'ять біт. Почніть зі сканування списку на 00000. Якщо його немає, ви можете зупинитися; якщо це так, ви переходите до 00001 і повторюєте процес. Це досить просто, але повільно для довгих списків довгих рядків.
Діагоналізація — це альтернативний підхід, який поступово створює відсутній рядок. Почніть з першого біта першого рядка у списку та інвертуйте його — це буде перший біт вашого нового рядка. Потім інвертуйте другий біт другого рядка та використовуйте його як другий біт нового рядка та повторюйте, доки не дійдете до кінця списку. Біти, які ви перевертаєте, гарантують, що новий рядок відрізняється від кожного рядка в оригінальному списку принаймні одним місцем. (Вони також утворюють діагональну лінію через список рядків, що дало назву техніці.)
Діагоналізація потребує перевірки лише одного біта з кожного рядка у списку, тому це часто набагато швидше, ніж інші методи. Але його справжня сила полягає в тому, наскільки добре він грає з нескінченністю.
«Рядки тепер можуть бути нескінченними; список може бути нескінченним — він все одно працює», — сказав Райан Вільямс, вчений-теоретик в Массачусетському технологічному інституті.
Першою людиною, яка використала цю силу, був Георг Кантор, засновник математичного розділу теорії множин. У 1873 році Кантор використав діагоналізацію, щоб довести, що деякі нескінченності існують більші за інші. Через шість десятиліть Тьюрінг адаптував канторівську версію діагоналізації до теорії обчислень, надавши їй виразно протилежного відтінку.
Гра «Обмеження».
Тьюрінг хотів довести існування математичних проблем, які не може вирішити жоден алгоритм, тобто проблем із чітко визначеними входами та виходами, але без надійної процедури переходу від входу до виходу. Він зробив це розпливчасте завдання більш керованим, зосередившись виключно на проблемах прийняття рішення, де вхідними даними може бути будь-який рядок із 0 і 1, а виходом – 0 або 1.
Визначення того, чи є число простим (ділиться тільки на 1 і на себе) є одним із прикладів проблеми прийняття рішення. Якщо ввести рядок, що представляє число, то правильний результат буде 1, якщо число є простим, і 0, якщо воно не є простим. Інший приклад — перевірка комп’ютерних програм на синтаксичні помилки (еквівалент граматичних помилок). Там рядки введення представляють код для різних програм — усі програми можна представити таким чином, оскільки саме так вони зберігаються та виконуються на комп’ютерах — і метою є вивести 1, якщо код містить синтаксичну помилку, і 0, якщо її немає. t.
Алгоритм вирішує проблему, лише якщо він дає правильний вихід для кожного можливого введення — якщо він не вдається хоча б один раз, це не є алгоритм загального призначення для цієї проблеми. Зазвичай ви спочатку вказуєте проблему, яку хочете вирішити, а потім намагаєтеся знайти алгоритм, який її розв’язує. Тьюрінг у пошуках нерозв’язних проблем перевернув цю логіку з ніг на голову — він уявив нескінченний список усіх можливих алгоритмів і використав діагоналізацію, щоб побудувати наполегливу проблему, яка перешкодила б кожному алгоритму в списку.
Уявіть собі сфальсифіковану гру з 20 запитань, у якій замість того, щоб починати з певного об’єкта, той, хто відповідає, винаходить привід, щоб відповісти «ні» на кожне запитання. Наприкінці гри вони описали об’єкт, повністю визначений властивостями, яких йому не вистачає.
Доказ діагоналізації Тьюрінга — це версія цієї гри, де запитання пробігають через нескінченний список можливих алгоритмів, неодноразово запитуючи: «Чи може цей алгоритм вирішити проблему, яку ми хочемо довести, що її неможливо обчислити?»
«Це щось на кшталт «нескінченних питань», — сказав Вільямс.
Щоб виграти гру, Тьюрингу потрібно було скласти задачу, відповідь якої ні для кожного алгоритму. Це означало ідентифікацію конкретного вхідного сигналу, який змушує перший алгоритм виводити неправильну відповідь, інший вхід, який робить другий невдалим, і так далі. Він знайшов ці особливі входи за допомогою трюку, схожого на той, який нещодавно використовував Курт Гедель доводити що самореференційні твердження на кшталт «це твердження недоведене» створюють проблеми для основ математики.
Ключове розуміння полягало в тому, що кожен алгоритм (або програму) можна представити у вигляді рядка з 0 і 1. Це означає, як у прикладі програми перевірки помилок, що алгоритм може приймати код іншого алгоритму як вхідні дані. В принципі, алгоритм може навіть приймати власний код як вхідні дані.
Маючи це розуміння, ми можемо визначити необчислювану проблему, подібну до тієї, що описана в доказі Тюрінга: «З огляду на вхідний рядок, що представляє код алгоритму, вивести 1, якщо цей алгоритм виводить 0, коли його власний код є входом; інакше виведіть 0.» Кожен алгоритм, який намагається вирішити цю проблему, видасть неправильний результат принаймні на одному вході, а саме на вході, що відповідає його власному коду. Це означає, що ця викривлена проблема не може бути розв’язана жодним алгоритмом.
Що не може зробити заперечення
Комп'ютерники ще не закінчили діагоналізацію. У 1965 році Юріс Хартманіс і Річард Стернз адаптували аргумент Тюрінга до доводити що не всі обчислювані проблеми однакові — деякі за своєю суттю складніші за інші. Цей результат започаткував галузь теорії обчислювальної складності, яка вивчає складність обчислювальних задач.
Але теорія складності також виявила межі протилежного методу Тюрінга. У 1975 році Теодор Бейкер, Джон Гілл і Роберт Соловей доведений що багато відкритих питань у теорії складності ніколи не можуть бути вирішені лише діагоналізації. Головною серед них є відома проблема P проти NP, яка запитує, чи всі проблеми з легко перевіреними рішеннями також легко розв’язати за допомогою правильного геніального алгоритму.
Сліпі плями діагоналізації є прямим наслідком високого рівня абстракції, який робить її такою потужною. Доказ Тюрінга не передбачав жодної необчислюваної проблеми, яка могла б виникнути на практиці — натомість він придумав таку проблему на льоту. Інші докази діагоналізації так само віддалені від реального світу, тому вони не можуть вирішити питання, де важливі деталі реального світу.
«Вони обробляють обчислення на відстані», — сказав Вільямс. «Я уявляю хлопця, який має справу з вірусами та отримує до них доступ через бардачок».
Невдача діагоналізації була ранньою ознакою того, що вирішення проблеми P проти NP буде успішним довга подорож. Але, незважаючи на свої обмеження, діагоналізація залишається одним із ключових інструментів в арсеналі теоретиків складності. У 2011 році Вільямс використав його разом із низкою інших методів доводити що певна обмежена модель обчислень не може вирішити деякі надзвичайно складні проблеми — результат, який вислизав від дослідників протягом 25 років. Це було далеко від розв’язання P проти NP, але це все одно являло собою значний прогрес.
Якщо ви хочете довести, що щось неможливо, не недооцінюйте силу простого «ні».
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. Автомобільні / електромобілі, вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- ChartPrime. Розвивайте свою торгову гру за допомогою ChartPrime. Доступ тут.
- BlockOffsets. Модернізація екологічної компенсаційної власності. Доступ тут.
- джерело: https://www.quantamagazine.org/alan-turing-and-the-power-of-negative-thinking-20230905/
- : має
- :є
- : ні
- :де
- ][стор
- $UP
- 1
- 20
- 2011
- 25
- a
- абстракція
- рахунки
- назад
- Алан
- Алан Тьюринг
- алгоритм
- алгоритмічно
- алгоритми
- ВСІ
- тільки
- Також
- серед
- an
- та
- Інший
- відповідь
- будь-який
- підхід
- ЕСТЬ
- аргумент
- виникати
- арсенал
- AS
- запитати
- At
- пекар
- заснований
- BE
- ставати
- за
- Біт
- Box
- Будує
- але
- by
- званий
- Кембридж
- CAN
- випадок
- Століття
- певний
- контроль
- головний
- код
- складність
- обчислення
- комп'ютер
- Інформатика
- комп'ютери
- Вважати
- будувати
- містить
- навпаки
- координувати
- виправити
- Відповідний
- виробити
- створений
- справу
- десятиліття
- рішення
- визначати
- певний
- описаний
- Незважаючи на
- деталі
- різний
- трудність
- прямий
- відстань
- Видатний
- do
- Ні
- справи
- Не знаю
- кожен
- Рано
- легко
- легко
- або
- кінець
- досить
- забезпечувати
- повністю
- рівним
- однаково
- Еквівалент
- помилка
- помилки
- Навіть
- Кожен
- досліджувати
- приклад
- виключно
- виконано
- існування
- надзвичайно
- FAIL
- зазнає невдачі
- Провал
- знаменитий
- далеко
- Велика різниця
- швидше
- поле
- знайти
- Перший
- п'ять
- Flip
- потік
- фокусування
- для
- форма
- знайдений
- Підвалини
- засновник
- від
- гра
- Головна мета
- породжувати
- отримати
- отримання
- даний
- дає
- мета
- буде
- випускник
- новаторський
- Хлопець
- було
- обробляти
- Жорсткий
- важче
- збруя
- Мати
- he
- голова
- Високий
- його
- історія
- Як
- HTTPS
- i
- ідентифікує
- IEEE
- if
- картина
- уявляли
- in
- індикація
- Нескінченний
- Infinity
- вхід
- витрати
- розуміння
- замість
- Інститут
- інтернет
- внутрішньо
- залучати
- IT
- ЙОГО
- сам
- Джон
- просто
- ключ
- курт
- пізніше
- запущений
- найменш
- рівень
- лежить
- як
- обмеження
- недоліки
- рамки
- Лінія
- список
- списки
- логіка
- Довго
- made
- журнал
- основний
- РОБОТИ
- керований
- багато
- Массачусетс
- Массачусетський технологічний інститут
- математичний
- математика
- Матерія
- засоби
- означав
- метод
- методика
- може бути
- mind
- відсутній
- помилки
- MIT
- модель
- сучасний
- більше
- найбільш
- рухатися
- багато
- ім'я
- а саме
- майже
- необхідний
- потреби
- негативний
- ніколи
- Нові
- немає
- зараз
- номер
- об'єкт
- of
- часто
- on
- один раз
- ONE
- тільки
- відкрити
- Оптимізувати
- or
- оригінал
- Інше
- інші
- інакше
- наші
- вихід
- власний
- Папір
- приватність
- платежі
- людина
- Піонерський
- місце
- plato
- Інформація про дані Платона
- PlatoData
- відіграє
- це можливо
- влада
- потужний
- практика
- необхідність
- Prime
- принцип
- Проблема
- проблеми
- процедура
- процес
- виробляти
- випускає
- програма
- програми
- прогрес
- доказ
- докази
- Доведіть
- доведений
- якості
- Квантамагазин
- питання
- питань
- швидше
- реальний
- Реальний світ
- нещодавно
- залишається
- повторювати
- ПОВТОРНО
- представляти
- представлений
- представляє
- Дослідники
- вирішене
- рішення
- обмежений
- результат
- Показали
- Річард
- фальсифіковані
- право
- РОБЕРТ
- прогін
- Зазначений
- то ж
- say
- приказка
- сканування
- наука
- вчений
- Вчені
- Пошук
- другий
- мабуть
- Здається,
- комплект
- siam
- аналогічний
- Аналогічно
- простий
- спрощений
- просто
- з
- SIX
- сповільнювати
- So
- Рішення
- ВИРІШИТИ
- Вирішує
- Розв’язування
- деякі
- що в сім'ї щось
- спеціальний
- плями
- старт
- Починаючи
- Заява
- стебла
- Як і раніше
- Стоп
- зберігати
- просто
- Стратегія
- рядок
- студент
- Дослідження
- вивчення
- такі
- синтаксис
- Приймати
- Завдання
- методи
- Технологія
- terms
- ніж
- Що
- Команда
- Їх
- потім
- теоретичний
- теорія
- Там.
- Ці
- вони
- Мислення
- це
- ті
- через
- зірвати
- до
- разом
- інструменти
- трафік
- біда
- правда
- намагатися
- турінг
- ПЕРЕГЛЯД
- Опинився
- повсюдний
- до
- використання
- використовуваний
- використання
- версія
- Проти
- віруси
- хотіти
- хотів
- було
- шлях..
- we
- webp
- ДОБРЕ
- добре визначений
- Що
- коли
- Чи
- який
- ВООЗ
- волі
- Вільямс
- виграти
- з
- працює
- світ
- б
- Неправильно
- років
- ще
- Ти
- вашу
- зефірнет