Какова временная сложность поиска по дереву Монте-Карло?
Я не уверен, должен ли этот вопрос идти на stackru или cs.stackexchange.com, поэтому, пожалуйста, дайте мне знать, если я должен переместить его.
Я пытаюсь найти временную сложность поиска по дереву Монте-Карло (MCTS). Поиск в Google не помогает, поэтому я пытаюсь понять, как далеко я сам это вычисляю.
Это делает четыре шага для n
итерации, или до истечения времени. Итак, мы будем иметь
О (п *(выбор + расширение + + моделирование обратного распространения))
Расширение просто добавляет дочерний элемент в текущий выбранный узел. Предполагая, что вы не используете односвязный список или что-то подобное для хранения дочерних элементов дерева, это может происходить в постоянное время, поэтому мы можем исключить его:
О (п *(выбор + + моделирование обратного распространения))
Учитывая фактор ветвления b
, а также t
Общее число узлов в дереве, я предполагаю, что этап выбора выполняется в O (b * logb t), потому что глубина дерева равна logb t, и на каждой глубине мы переходим b дочерних элементов.
Таким образом, наша временная сложность становится
O (n *(b * logb t + симуляция + обратное распространение))
Обратное распространение также требует времени, пропорционального глубине дерева, так что оно становится:
O (n *(b * logb t + симуляция +b * logb t))
Но сейчас я не уверен, как добавить к этому этап моделирования.
1 ответ
После того, как мы выбрали узел для расширения, мы расширяем узел до m случайных дочерних элементов, а не одного дочернего элемента. Кроме того, вместо того, чтобы моделировать дочернее состояние только один раз, мы моделируем каждое дочернее состояние k раз.
- m число дочерних узлов
- k - количество симуляций ребенка
Время выполнения алгоритма может быть просто вычислено как O(mkI/C), где m и k такие же, как и раньше, а I - это число итераций, а C - количество доступных ядер.
Ссылка:
http://stanford.edu/~rezab/dao/projects/montecarlo_search_tree_report.pdf