Разница между стохастическим и эвристическим алгоритмом

расширения вопрос streetparade, Я хотел бы спросить, в чем разница, если она есть, между стохастическим и эвристическим алгоритмом.

было бы правильно сказать, что стохастический алгоритм на самом деле является одним из типов эвристики?

2 ответов


TTBOMK, "стохастический алгоритм" не является стандартным термином. "Рандомизированный алгоритм", однако, и это, вероятно, то, что здесь подразумевается.

рандомизированы: использует случайность как-то. Есть два вкуса:Монте-Карло алгоритмы всегда заканчиваются в ограниченное время, но не гарантируют оптимальное решение, в то время как Лас-Вегас алгоритмы не обязательно гарантированно заканчиваются в любое конечное время, но обещают найти оптимальное решение. (Обычно они также должны иметь конечное ожидается бег времени.) Примеры общих алгоритмов Монте-Карло: MCMC, имитационный отжиг и тестирование примитивности Миллера-Рабина. Quicksort с рандомизированным выбором поворота-это алгоритм Лас-Вегаса, который всегда заканчивается в конечное время. Алгоритм, который не использует никакой случайности, является детерминированные.

эвристика: не гарантируется, чтобы найти правильный ответ. Алгоритм, который не эвристика-это точно.

многие эвристики чувствительны к" случайным " свойствам ввода, которые не влияют на истинное решение, например, элементы заказа рассматриваются в эвристике первого соответствия для Проблемы упаковки бункера. В этом случае их можно рассматривать как рандомизированные алгоритмы Монте-Карло: вы можете случайным образом переставлять входы и перезапускать их, всегда сохраняя лучший ответ, который вы найдете. OTOH, другие эвристики не имеют этого свойства - например, Эвристика первого приближения является детерминированной, поскольку она всегда сначала сортирует элементы в порядке уменьшения размера.

Если множество возможных выходов конкретного рандомизированного алгоритма конечно и содержит истинный ответ, то запуск его достаточно долго "практически гарантирован", чтобы в конечном итоге найти его (в том смысле, что вероятность не найти его можно сделать произвольно малым, но никогда 0). Обратите внимание, что это не происходит автоматически некоторая перестановка входов в эвристику приведет к получению точного ответа - в случае First-Fit оказывается, что это is верно, но это было доказано только в 2009 году.

иногда могут быть сделаны более сильные утверждения о сходимости рандомизированных алгоритмов: обычно они находятся по строкам "для любого заданного малого порога d, после t шагов мы будем в пределах d оптимального решения с вероятностью f (t, d)", с F(t, d) возрастающей функцией t и d.


подходы к стенду обычно используются для ускорения genere и test решения NP полных задач

  1. стохастические алгоритмы используют случайность

    Они используют все комбинации, но не по порядку, а вместо этого они используют случайные из всего спектра возможностей, надеясь поразить решение раньше. Реализация быстрая простая и одиночная итерация также быстрая (постоянная время)

  2. алгоритмы эвристики

    они подбирают комбинации не случайно, а на основе некоторых знаний об используемом процессе, входном наборе данных или использовании. Таким образом, они значительно уменьшают количество комбинаций до тех, которые они, вероятно, являются решением, и используют только те, но обычно все из них, пока решение не найдено.

    сложность реализации зависит от проблемы, одиночная итерация обычно намного медленнее тогда стохастический подход (постоянное время), поэтому эвристика используется только в том случае, если количество возможностей достаточно уменьшено, чтобы фактическое ускорение было видно, потому что даже если сложность алгоритма с эвристикой обычно намного ниже, иногда постоянное время достаточно велико, чтобы даже замедлить вещи ... (в терминах времени выполнения)

подходы к стенду могут быть объединены вместе