Відмінності між версіями «Увипадковлений алгоритм»

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
(Виправлено джерел: 1; позначено як недійсні: 0. #IABot (v2.0beta14))
 
(Не показані 14 проміжних версій 6 користувачів)
Рядок 1: Рядок 1:
'''Випадковістний алгоритм''' ({{lang-en|randomized algorithm}}) — це [[алгоритм]], який використовує елемент [[випадковість|випадковості]] як частину своєї логіки. Алгоритм зазвичай використовує [[Дискретний рівномірний розподіл|рівномірно випадкові]] біти як допоміжний вхід для спрямування своєї поведінки в надії досягнення хорошої швидкодії в ''середньому'' серед усіх можливих виборів випадкових бітів. Формально, швидкодією алгоритму буде [[випадкова величина]] визначена випадковими бітами; отже або швидкодія, або вихід (або і те, і те) є випадковими величинами.
+
'''Увипадковлений алгоритм''' ({{lang-en|randomized algorithm}}) — це [[алгоритм]], який використовує елемент [[випадковість|випадковості]] як частину своєї логіки. Алгоритм зазвичай використовує [[Дискретний рівномірний розподіл|рівномірно випадкові]] біти як допоміжний вхід для спрямування своєї поведінки в надії досягнення хорошої швидкодії в ''середньому'' серед усіх можливих виборів випадкових бітів. Формально, швидкодією алгоритму буде [[випадкова величина]] визначена випадковими бітами; отже або швидкодія, або вихід (або і те, і те) є випадковими величинами.
   
  +
Потрібно розрізняти алгоритми, що використовують випадковий вхід для зменшення очікуваного часу виконання або об'єму використаної пам'яті, але завжди видають правильний вислід у обмежений відтинок часу, і '''ймовірнісні алгоритми''' ({{lang-en|probabilistic algorithms}}), які, залежно від випадкового входу, можуть видати некоректний вислід ([[Алгоритм Монте-Карло]]) або зазнати невдачі в його отриманні ([[Лас-Вегас (алгоритм)|Алгоритм Лас-Вегаса]]), повідомивши про провал або через неможливість завершення.
[[Категорія:Увипадковлені алгоритми| ]]
 
   
  +
У другому випадку, випадкового виконання і випадкового виходу, використання терміну «алгоритм» під питанням. У разі випадкового виходу, формально це вже не алгоритм.<ref>«Ймовірнісні алгоритми не треба плутати з методами (які я відмовляюсь називати алгоритмами), які видають результат, що з високою ймовірністю правильний. Це суттєво, що алгоритм видає правильний результат (зважаючи на помилки людини чи комп'ютера), навіть якщо це стається за великий проміжок часу.» Henri Cohen (2000). ''A Course in Computational Algebraic Number Theory''. Springer-Verlag, p. 2.</ref>
[[bn:সম্ভাবনাভিত্তিক অ্যালগোরিদম]]
 
  +
Однак, у деяких випадках, ймовірнісні алгоритми є єдиним практичним способом розв'язання проблеми.<ref>«В [[Тест простоти|тестах простоти]] для дуже великих чисел обраних навмання, шанс наткнутись на значення, яке обманює [[Тест простоти Ферма|тест Ферма]] менша ніж шанс того, що [[космічні промені|космічна радіація]] спричинить помилку в перебігу коректного алгоритму. Сприймання алгоритму неадекватним через першу причину, але не через другу показує різницю між математикою й інженерією.» Hal Abelson and Gerald J. Sussman (1996). ''Structure and Interpretation of Computer Programs''. [[MIT Press]], [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#footnote_Temp_80 section 1.2] {{Webarchive|url=https://web.archive.org/web/20060903155101/http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#footnote_Temp_80 |date=3 вересень 2006 }}.</ref>
[[ca:Algorisme probabilístic]]
 
  +
[[cs:Pravděpodobnostní algoritmus]]
 
  +
Практично, увипадковлений алгоритм моделюють із використанням [[Генератор псевдовипадкових чисел|генератора псевдовипадкових чисел]] замість дійсно випадкових біт; таке втілення може відхилятись від очікуваної в теорії поведінки.
[[de:Randomisierter Algorithmus]]
 
  +
[[en:Randomized algorithm]]
 
  +
== Примітки ==
[[eo:Hazardigita algoritmo]]
 
  +
{{reflist}}
[[es:Algoritmo probabilista]]
 
  +
[[fr:Algorithme probabiliste]]
 
 
[[Категорія:Увипадковлені алгоритми| ]]
[[he:אלגוריתם אקראי]]
 
  +
[[Категорія:Теорія ймовірнісної складності]]
[[ja:乱択アルゴリズム]]
 
[[ko:확률적 알고리즘]]
 
[[pl:Algorytm probabilistyczny]]
 
[[pt:Algoritmo probabilístico]]
 
[[th:ขั้นตอนวิธีแบบสุ่ม]]
 
[[zh:随机化算法]]
 

Поточна версія на 16:01, 10 травня 2019

Увипадковлений алгоритм (англ. randomized algorithm) — це алгоритм, який використовує елемент випадковості як частину своєї логіки. Алгоритм зазвичай використовує рівномірно випадкові біти як допоміжний вхід для спрямування своєї поведінки в надії досягнення хорошої швидкодії в середньому серед усіх можливих виборів випадкових бітів. Формально, швидкодією алгоритму буде випадкова величина визначена випадковими бітами; отже або швидкодія, або вихід (або і те, і те) є випадковими величинами.

Потрібно розрізняти алгоритми, що використовують випадковий вхід для зменшення очікуваного часу виконання або об'єму використаної пам'яті, але завжди видають правильний вислід у обмежений відтинок часу, і ймовірнісні алгоритми (англ. probabilistic algorithms), які, залежно від випадкового входу, можуть видати некоректний вислід (Алгоритм Монте-Карло) або зазнати невдачі в його отриманні (Алгоритм Лас-Вегаса), повідомивши про провал або через неможливість завершення.

У другому випадку, випадкового виконання і випадкового виходу, використання терміну «алгоритм» під питанням. У разі випадкового виходу, формально це вже не алгоритм.[1] Однак, у деяких випадках, ймовірнісні алгоритми є єдиним практичним способом розв'язання проблеми.[2]

Практично, увипадковлений алгоритм моделюють із використанням генератора псевдовипадкових чисел замість дійсно випадкових біт; таке втілення може відхилятись від очікуваної в теорії поведінки.

Примітки[ред. | ред. код]

  1. «Ймовірнісні алгоритми не треба плутати з методами (які я відмовляюсь називати алгоритмами), які видають результат, що з високою ймовірністю правильний. Це суттєво, що алгоритм видає правильний результат (зважаючи на помилки людини чи комп'ютера), навіть якщо це стається за великий проміжок часу.» Henri Cohen (2000). A Course in Computational Algebraic Number Theory. Springer-Verlag, p. 2.
  2. «В тестах простоти для дуже великих чисел обраних навмання, шанс наткнутись на значення, яке обманює тест Ферма менша ніж шанс того, що космічна радіація спричинить помилку в перебігу коректного алгоритму. Сприймання алгоритму неадекватним через першу причину, але не через другу показує різницю між математикою й інженерією.» Hal Abelson and Gerald J. Sussman (1996). Structure and Interpretation of Computer Programs. MIT Press, section 1.2 Архівовано 3 September 2006[Дата не збігається] у Wayback Machine..