Введение
С самых первых дней информатики — области, известной своим методическим подходом к решению задач — случайность играла важную роль. Первая программа, запущенная на первом в мире электронном компьютере общего назначения, использовала случайность для моделирования ядерных процессов. Подобные подходы с тех пор использовались в астрофизике, науке о климате и экономике. Во всех этих случаях подключение случайные числа на определенных этапах алгоритма помогает исследователям учитывать неопределенность в отношении многих способов, которыми могут протекать сложные процессы.
Но добавление случайности в алгоритм также может помочь вам вычислить правильный ответ на однозначные вопросы типа «истина или ложь». «Вы просто говорите: «Хорошо, позвольте мне сдаться, позвольте мне не пытаться, позвольте мне просто выбрать что-нибудь наугад», — сказал Эрик Блейс, ученый-компьютерщик из Университета Ватерлоо. «Для слишком многих проблем это оказывается успешным подходом».
Предположим, вы хотите определить, является ли заданное число простым (делится только на 1 и само себя) или составным (делится также на другие целые числа). Можно просто попытаться разделить его на все возможные множители, но для больших чисел этот метод «грубой силы» и другие алгоритмы факторинга мучительно медленны. А если число окажется составным, алгоритмы факторинга сообщат вам значения его делителей — больше информации, чем вы просили. Если вас волнует только «простота» числа, существует ли более эффективный алгоритм?
Есть, если использовать случайность. Основная идея восходит к результату французского математика 17-го века Пьера де Ферма, известного как его «маленькая теорема». Ферма рассмотрел два целых числа — назовем их N и x. Он доказал, что если N является простым числом, то xN - x всегда кратно Nнезависимо от стоимости x, Эквивалентно, если xN - x не кратно N, то N не может быть простым числом. Но обратное утверждение не всегда верно: если xN - x это кратное N, то N обычно, но не всегда является простым.
Чтобы превратить маленькую теорему Ферма в тест на простоту, просто возьмите N что вас интересует, выбирайте x случайным образом и подставьте два числа в xN - x. Если результат не кратен N, тогда все готово: вы знаете, что N однозначно составной. Если результат кратен N, то N вероятно, является премьер-министром. Теперь выберите другой случайный x и попробуй еще раз. В большинстве случаев после нескольких десятков попыток можно почти с уверенностью заключить, что N является простым числом. «Вы делаете это несколько раз, — сказал Блэз, — и каким-то образом теперь ваша вероятность совершить ошибку меньше, чем вероятность столкновения астероида с Землей между этим моментом и моментом, когда вы посмотрите на ответ».
Первый простоты чисел тестов использование рандомизированных алгоритмов (основанных на уточнениях малой теоремы Ферма) открыло новую эру. Оказалось, что проблему за проблемой гораздо легче решить с помощью случайности, чем с помощью неслучайных или детерминированных алгоритмов. Суть заключалась в том, чтобы переформулировать каждую проблему так, чтобы она могла быть быстро решена при соответствующем значении некоторого числа. x, а затем докажите, что почти любой x сделал бы. Решение работает, хотя исследователи понятия не имеют, как определить, является ли тот или иной конкретный выбор хорошим. Математики шутили, что эта необычная задача сродни найти сено в стоге сена.
Но эти успехи заставили исследователей задаться вопросом, почему случайность должна помогать в таких задачах, как проверка на простоту, которая связана с поиском скрытых, неслучайных паттернов. -- В этом есть что-то парадоксальное, -- сказал Рахул Сантанам, ученый-компьютерщик из Оксфордского университета. «Чистая случайность помогает вам понять структуру, которая решает проблему».
В 1994 году ученые-компьютерщики Ноам Нисан и Ави Вигдерсон помог разрешить эту путаницу, продемонстрировав, что случайность, хотя и полезная, вероятно, не нужна. Они доказанный что одно из двух должно быть верным: либо все проблемы, которые могут быть эффективно решены с использованием случайности, также имеют быстрые детерминированные алгоритмы, либо многие общеизвестно сложные проблемы втайне просты. Ученые-компьютерщики считают вторую возможность маловероятной.
Фактически, специалистам по информатике часто проще разработать детерминированный алгоритм, начав с рандомизированной версии, а затем «дерандомизировав» ее. «Как только он у меня появится, я внезапно увижу очень очевидный способ сделать его детерминированным», — сказал Эли Упфал, ученый-компьютерщик из Университета Брауна. «Но если бы я не думал об этом случайным образом как о вероятностном вопросе, я бы, вероятно, не подумал об этом».
Спустя почти 30 лет после знаменательного доказательства Нисана и Вигдерсона рандомизированные алгоритмы остаются такими же популярными, как и прежде, потому что дерандомизация может быть сложной, а детерминированные алгоритмы часто эффективны только в принципе. Только в 2002 году трое исследователей нашли способ дерандомизировать тестирование на простоту, и на практике их алгоритм намного медленнее, чем лучшие рандомизированные алгоритмы. Для других задач трудно даже понять, с чего начать — у самого известного алгоритма есть проблема курицы и яйца, избежать которой можно только с помощью случайности.
Так обстоит дело с недавним прорывом в теории графов. В прошлом году трое компьютерщиков разработали быстрый алгоритм для нахождения кратчайшего пути через граф — паутину узлов, соединенных отрезками прямых — которая работает, даже если некоторые отрезки вычитают из общей длины пути, а не прибавляют к ней. Их алгоритм заключался в преобразовании графа в более простой путем удаления определенных сегментов, решения задачи для упрощенного графа и последующего учета удаленных сегментов. Они могли бы доказать, что алгоритм будет работать быстро, если кратчайший путь не будет проходить через слишком много удаленных сегментов — в противном случае последний шаг займет слишком много времени.
Но как решить, какие сегменты удалить в первую очередь? Детерминистически найти идеальный набор сегментов не просто сложно — это невозможно. Набор зависит от того, какие пути самые короткие, и именно эту проблему пытались решить трое исследователей. Но даже несмотря на то, что они не смогли найти лучший набор сегментов для удаления, они смогли доказать, что большинство случайных выборов будут довольно хорошими, и этого было достаточно, чтобы разорвать цикл самореференции. В тех редких случаях, когда алгоритм делает неудачный выбор и застревает на последнем шаге, они могут просто остановиться и запустить его снова.
«Случайность — это в основном способ убедиться, что что-то верно в отношении оптимального решения, не зная оптимального решения», — сказал он. Аарон Бернштейн, один из авторов нового алгоритма.
Случайность нашла бесчисленное множество других применений в компьютерных науках, от криптографии до теории игр и машинного обучения. Скорее всего, он здесь, чтобы остаться.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://www.quantamagazine.org/how-randomness-improves-algorithms-20230403/
- :является
- ][п
- $UP
- 1
- 1994
- a
- О нас
- об этом
- AC
- Учетная запись
- Бухгалтерский учет
- После
- алгоритм
- алгоритмы
- Все
- всегда
- и
- Другой
- ответ
- подхода
- подходы
- соответствующий
- МЫ
- AS
- Астероид
- At
- Авторы
- назад
- основанный
- основной
- в основном
- BE
- , так как:
- начинать
- не являетесь
- ЛУЧШЕЕ
- между
- Немного
- затянутый
- Ломать
- прорыв
- by
- вычислять
- призывают
- CAN
- заботится
- случаев
- случаев
- определенный
- уверенность
- вызов
- шансы
- выбор
- выбор
- Выберите
- климат
- комплекс
- компьютер
- Информатика
- вывод
- замешательство
- подключенный
- Рассматривать
- считается
- может
- криптография
- Дней
- решать
- определенно
- демонстрирующий
- зависит
- Определять
- развивать
- развитый
- трудный
- вниз
- дюжина
- каждый
- земля
- легче
- Экономика
- эффективный
- эффективно
- или
- Электронный
- окончания поездки
- достаточно
- обеспечивать
- Эпоха
- ошибка
- Даже
- НИКОГДА
- факторы
- БЫСТРО
- несколько
- поле
- Найдите
- обнаружение
- First
- Что касается
- найденный
- Французский
- от
- игра
- общее назначение
- получить
- Дайте
- данный
- идет
- хорошо
- график
- обрабатывать
- Жесткий
- Есть
- имеющий
- помощь
- помог
- помощь
- помогает
- здесь
- Скрытый
- ударять
- Как
- How To
- HTTPS
- i
- идея
- идеальный
- важную
- что она
- in
- информация
- заинтересованный
- вовлеченный
- IT
- ЕГО
- саму трезвость
- JPG
- Основные
- Знать
- знание
- известный
- ориентир
- большой
- Фамилия
- В прошлом году
- изучение
- Длина
- такое как
- линия
- мало
- Длинное
- посмотреть
- машина
- обучение с помощью машины
- сделанный
- сделать
- ДЕЛАЕТ
- многих
- математике
- метод
- методический
- БОЛЕЕ
- более эффективным
- самых
- с разными
- Возле
- необходимо
- Новые
- узлы
- ядерный
- номер
- номера
- Очевидный
- of
- on
- ONE
- оптимальный
- Другое
- в противном случае
- Oxford
- Прошло
- путь
- паттеранами
- выбирать
- пьер
- Часть
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Играть
- играл
- штекер
- Популярное
- возможность
- возможное
- практика
- довольно
- Простое число
- принцип
- вероятно
- Проблема
- решение проблем
- проблемам
- Процессы
- FitPartner™
- доказательство
- Доказывать
- доказанный
- Квантовый журнал
- вопрос
- Вопросы
- быстро
- случайный
- Рандомизированное
- хаотичность
- РЕДКИЙ
- скорее
- последний
- Несмотря на
- оставаться
- исследователи
- результат
- Роли
- Run
- Сказал
- Наука
- Ученый
- Ученые
- Во-вторых
- сегментами
- набор
- должен
- Сиам
- аналогичный
- упрощенный
- просто
- с
- медленной
- небольшой
- Решение
- РЕШАТЬ
- Решает
- Решение
- некоторые
- удалось
- конкретный
- Начало
- заявление
- оставаться
- Шаг
- Шаги
- Stop
- Структура
- успешный
- взять
- тестXNUMX
- Тестирование
- который
- Ассоциация
- График
- их
- Их
- Эти
- вещи
- три
- Через
- раз
- в
- слишком
- Всего
- превращение
- правда
- ОЧЕРЕДЬ
- Оказалось
- Неопределенность
- Университет
- Оксфордский университет
- использование
- обычно
- ценностное
- Наши ценности
- версия
- Путь..
- способы
- Web
- будь то
- который
- без
- работает
- мире
- бы
- год
- лет
- Ты
- ВАШЕ
- зефирнет