Прості онлайн-ігри з 20 питань, що працюють на моніторі.
Як вони так гадають?
Прості онлайн-ігри з 20 питань, що працюють на моніторі.
Як вони так гадають?
Відповіді:
Ви можете думати про це як алгоритм бінарного пошуку. Під час кожної ітерації ми ставимо запитання, яке повинно усунути приблизно половину можливих варіантів вибору слів. Якщо є всього N слів, то ми можемо очікувати отримання відповіді після запитання log2 (N).
Маючи 20 запитань, ми повинні оптимально вміти знаходити слово серед 2 ^ 20 = 1 мільйон слів.
Одним із простих способів усунути людей, що не мають права (неправильні відповіді) було б, ймовірно, використовувати щось на зразок RANSAC . Це означатиме, що замість того, щоб брати до уваги всі відповіді на запитання, ви випадково вибираєте меншу підмножину, що достатньо, щоб дати вам одну відповідь. Тепер ви повторюєте, що кілька разів з різним випадковим набором питань, поки не побачите, що більшу частину часу ви отримуєте однаковий результат. то ви знаєте, що маєте правильну відповідь.
Звичайно, це лише один із способів вирішення цієї проблеми.
code
посилання, щоб побачити його: openbookproject.net/py4fun/animal/animal.html
Дерево рішень підтримує подібний додаток безпосередньо. Дерева рішень зазвичай використовують у штучному інтелекті.
Дерево рішень - це двійкове дерево, яке задає «найкраще» питання на кожній гілці, щоб розрізняти колекції, представлені його лівими та правими дітьми. Найкраще запитання визначається деяким алгоритмом навчання, який творці програми з 20 питань використовують для побудови дерева. Потім, як зазначають інші афіші, дерево глибиною 20 рівнів дає вам мільйон речей.
Простий спосіб визначення "найкращого" питання в кожному пункті - пошук властивості, яка найбільш рівномірно розділяє колекцію навпіл. Таким чином, коли ви отримаєте відповідь «так / ні» на це питання, ви позбудетесь приблизно половини колекції на кожному кроці. Таким чином можна наблизити двійковий пошук.
Вікіпедія дає більш повний приклад:
http://en.wikipedia.org/wiki/Decision_tree_learning
І деякі загальні відомості:
Рекомендую прочитати про гру тут: http://en.wikipedia.org/wiki/Twenty_Questions
Зокрема, розділ "Комп'ютери":
У грі передбачено, що інформація (вимірювана статистикою ентропії Шеннона), необхідна для ідентифікації довільного об'єкта, становить приблизно 20 біт. Гра часто використовується як приклад при навчанні людей теорії інформації. Математично, якщо кожне запитання побудовано таким чином, щоб ліквідувати половину об'єктів, 20 запитань дозволять запитувачу розрізняти 2 20 або 1048,576 предметів. Відповідно, найефективніша стратегія для двадцяти питань - це задавати питання, які розбиватимуть поле інших можливостей приблизно навпіл щоразу. Процес аналогічний алгоритму двійкового пошуку в інформатиці.
Він рахується як "нейронна мережа в Інтернеті", і в цьому лежить ключ. Ймовірно, зберігається ймовірність питання / відповіді у запасній матриці. Використовуючи ці ймовірності, він може використовувати алгоритм дерева рішень, щоб визначити, яке питання задати, що найкраще звузить наступне питання. Як тільки воно скоротить кількість можливих відповідей на кілька десятків, або якщо до нього вже досягнуто 20 питань, то він починає зчитувати найімовірніше.
Дійсно інтригуючий аспект 20q.net полягає в тому, що на відміну від більшості алгоритмів дерева рішень та нейронних мереж, про які я знаю, 20q підтримує розріджену матрицю та додаткові оновлення.
Редагувати: Виявляється, відповідь була весь час у мережі. Робін Бургенер, винахідник, детально описав свій алгоритм під час подання патенту 2005 року .
Він використовує алгоритм навчання.
k-NN - хороший приклад одного з них.