Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Крестики-нолики. Дополнительные алгоритмы. / 25 сообщений из 76, страница 1 из 4
09.08.2006, 17:05
    #33908754
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
В основном у меня сейчас в программе крестики-нолики используется два алгоритма:
-просчет веса клетки (исходя из комбинаций)
-препросмотр возможный ходов и выбор наилучшего.

А есть какие-нибудь дополнительные алгоритмы для оптимизации ходов?
Например, чтобы не сразу стало понятно замысел компьютера на первых ходах срдеи равных можно выбирать случайным образом. Вполне непонятно становится. Хотя позже, когда существует фактически 1 нормальный ход, данный алгоритм не приживается: не из чего выбирать.
...
Рейтинг: 0 / 0
09.08.2006, 17:59
    #33908953
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Также есть немало способов уменьшить количество просмотров, за счеи, правда, повышения памяти.
ПАМАТЬ[.............|.............]СКОРОСТЬ.
...
Рейтинг: 0 / 0
10.08.2006, 12:49
    #33910290
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
AklinВ основном у меня сейчас в программе крестики-нолики используется два алгоритма:
-просчет веса клетки (исходя из комбинаций)
-препросмотр возможный ходов и выбор наилучшего.
....

если идёт речь о "стандартной" доске 3*3 то рекомендую (третий алгоритм) забить ифами возможные комбинации. Там штук 5 ифов и однин исключительный случай - вся игра. Если тупо следовать тактики - проиграть НЕ возможно. Выиграть можно, если первым начинаешь и противник допускает тактическую ошибку...это всё... если память не изменяет (всё таки лет дцать прошло)...

другое дело - рэндзю (не знаю, правильно ли звучит с японского). Это игра - уже прочищает мозги основательно, красивая, заставляет думать тактически и правильно оценять свои возможности.


с уважением
(круглый)
...
Рейтинг: 0 / 0
10.08.2006, 13:33
    #33910433
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Как раз о n*n и иэет речь. А про 3*3 - там делать нечего, если оба игрока не дураки, то будет ничья.

Прим. также игра называется Го-Моку.
...
Рейтинг: 0 / 0
11.08.2006, 06:33
    #33911953
La_Sania
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
AklinВ основном у меня сейчас в программе крестики-нолики используется два алгоритма:

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


Ну... Ты можешь запоминать вес каждой позиции, и тогда если при дальнейшей игре/переборе ты наткнешься на эту позицию опять, то уже будешь знать на сколько она выйгрышна.

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

На англицком можно почитать тут и тут .

Если у тебя крестики-нолики 3х3, 4х4 или 5x5 то тогда ты по идее сможешь просчитать все просто так, а если больше - то просто просчитывай маленькие куски вокруг того места где противник сделал ход.
...
Рейтинг: 0 / 0
11.08.2006, 09:46
    #33912193
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Это було включено практически сразу.
...
Рейтинг: 0 / 0
17.08.2006, 02:20
    #33923465
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Вот простейший алгоритм АИ для крестиков ноликов на доске 3 на 3. Работает железно. Воплощен может быть даже на калькуляторе. (Когда учился программить, придумал его для ZX=Spectrum)

Доска состоит из 8 блоков по три клетки подряд.
(3 вертикальных, 3 горизонтальных, две диагонали).

При обработке своего хода комп должен сделать следующее. (не важно, чьим ходом заняты клетки - компьютерным или человека)

1)проверить доску, и посчитать количество знаков на каждой диагонали.
2)если есть диагональ, содержащая только одну пустую клетк, ход делается на неё. Если таких несколько (трудно представить, как до такого могло дойти, но мало ли) - на общую пустую клетку либо на случайную.
3)если есть есть несколько диагоналей с двумя пустыми клетками, ход делается на клетку, которую пересекает наибольшее число диагоналей этого типа. (с одной занятой клеткой).
4)если все предыдущеие пункты не срабатывают, ход делается на центральную клетку, или (если хотите дать шанс на победу) - на случайную.

В случае, если первый ход делает комп, все партию можно разложить на if|else. Была такая программа на микрокалькуляторе МК56, кажется. Очень просто, но под рукой её нет, а принцип построения не помню.

Вопросы?
...
Рейтинг: 0 / 0
17.08.2006, 10:18
    #33923826
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
МНЕ НЕ НАДО 3*3. Я могу написать прогу, которая сгенерит прогу, которая сама напишет крестики-нолики для 3*3.

Мне нужны алгоритмы, помимо вышеописааных, для игры крестики-нолики на фактически бесконечном поле. (действительно - от 12*12 до 30*30)
...
Рейтинг: 0 / 0
18.08.2006, 09:39
    #33926817
Last_Alien
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Относительно 3*3. Если игрок, который начинает, не дурак, то он выигрывает ВСЕГДА.
...
Рейтинг: 0 / 0
18.08.2006, 11:31
    #33927264
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Last_AlienОтносительно 3*3. Если игрок, который начинает, не дурак, то он выигрывает ВСЕГДА.
Если компьютера не дурак, то ходя вторым, приведет мимнимум к ничьей.
Выиграть у умного соперника в 3*3 невозможно.
...
Рейтинг: 0 / 0
18.08.2006, 11:54
    #33927406
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Last_AlienОтносительно 3*3. Если игрок, который начинает, не дурак, то он выигрывает ВСЕГДА.

Сыграем на деньги ? Ты первый игрок, в случае ничьей платишь
...
Рейтинг: 0 / 0
18.08.2006, 15:03
    #33928503
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Last_AlienОтносительно 3*3. Если игрок, который начинает, не дурак, то он выигрывает ВСЕГДА.

БРЯХНЯ...

(круглый)
...
Рейтинг: 0 / 0
21.08.2006, 09:48
    #33931386
Last_Alien
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Gluk (Kazan) Last_AlienОтносительно 3*3. Если игрок, который начинает, не дурак, то он выигрывает ВСЕГДА.

Сыграем на деньги ? Ты первый игрок, в случае ничьей платишь

Попробуем :-)

| | | |
| |x| |
| | | |
...
Рейтинг: 0 / 0
21.08.2006, 10:32
    #33931487
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
А можно я ?
Код: plaintext
1.
2.
| | | |
| |x| |
|o| | |
...
Рейтинг: 0 / 0
21.08.2006, 11:06
    #33931599
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Last_Alien
| | | |
| |x| |
| | | |
Я просто для азарта: играй кем хочешь, можешь со всеми сразу.
Код: plaintext
1.
2.
3.
|0| | |
| |x| |
| | | |
...
Рейтинг: 0 / 0
21.08.2006, 12:00
    #33931774
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
+1
...
Рейтинг: 0 / 0
21.08.2006, 15:43
    #33932633
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Помимо всего перечисленного, есть и некоторые нестандартные алгоритмы, отсящиеся к искусственному интеллекту:

1) Сделать нейронную сеть. В качестве входа давать некоторую оценку исходной позиции( сколько у тебя три подряд, у врага, сколько у тебя 4 подряд, и т.д.) - в качестве выхода - оценка позиции от 0 до 1. Потом выбирать позицию с макс. очками. Придётся эту сетку долго тренировать(давать исходные данные, напрмер против стандартного алгоритма или друг с другом), а затем просчитать её.

2) Генетические алгоритмы: придумываем примитивный язык программирования позволяющий складывать и вычитать. Генерируем случайную программу, которая на входе берёт всё поле, а на выход - куда ставить. Генерируется некоторое количетсво таких программ, они играют друг с другом и с эталоном(стандартной программой). Дольше всех продержавшиеся программы с небольщими случайными изменениями , новые случайные и перекрещивание этих проблем берём в следующее поколение. С некоторого поколения получатся достаточно неплохие программы

3) Кластерный анализ: разбиваем пространство на некоторые группы (кластеры). Например доску 20*20 можно ещё дополнить диагоналями, количеством кестиков и ноликов на горизонтали,вертикали,всех диагонолях - создаём многомерное пространство. Далее разбиваем возможные комбинации на разные группы(возможные группы- следующим ходом выигрыш, следующим ходом проигрыш,необходимо атаковать врага(строить 3 и 4), необходимо защищаться(не давать врагу строить 3 и 4)

4) Нечёткая логика. Посколько есть разные вссыказывания насчёт игры( не давать врагу сторить слищком много открытых троек, стараться увеличавть свои но не помогаю врашу делать четвёртуи и так далее), то применения нечёткой логики позволит достаточно просто сформулировать правила как следует ходить в той или иной ситуации... правда где найти специалистов с их советами?
5) Эмулирование поведения муравьёв,эмулирование отжига - к сожалению сразу не соображу,как это здесь можно применить )), однако для расстановки n ферзей на доске n на n и для задачи коммиваяжора они работают классно.

Ну а если всё вышепречисленное кажется надуманным и неправильным, то подойдёт и таблица дебютов - стандартные позиции со всем возможными ходами на начальном этапе игры
...
Рейтинг: 0 / 0
21.08.2006, 15:47
    #33932646
last_alien2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
BarloneА можно я ?
Код: plaintext
1.
2.
| | | |
| |x| |
|o| | |


|x| | |
| |x| |
|o| | |
...
Рейтинг: 0 / 0
21.08.2006, 15:48
    #33932650
last_alien2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Aklin
Я просто для азарта: играй кем хочешь, можешь со всеми сразу.
Код: plaintext
1.
2.
3.
|0| | |
| |x| |
| | | |


Код: plaintext
1.
2.
3.
|0| | |
| |x| |
|x| | |
...
Рейтинг: 0 / 0
21.08.2006, 16:07
    #33932699
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
last_alien2
Код: plaintext
1.
2.
3.
|0| | |
| |x| |
|x| | |


Код: plaintext
1.
2.
3.
|0| |0|
| |x| |
|x| | |

На какую сумму играем ?
...
Рейтинг: 0 / 0
21.08.2006, 16:38
    #33932782
last_alien2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Ничья :-(((
Какой позор на мою седую голову :-(((
...
Рейтинг: 0 / 0
21.08.2006, 17:18
    #33932899
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Aklin
Я просто для азарта: играй кем хочешь, можешь со всеми сразу.

Код: plaintext
1.
2.
3.
|0| |0|
| |x| |
|x| | |
...
Рейтинг: 0 / 0
21.08.2006, 22:17
    #33933348
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Написал версию без:
-препросмотра,
-рандома на равных позициях.

ОНО ИГРАЕТ! Причем неплохо. я фигею.
...
Рейтинг: 0 / 0
22.08.2006, 08:20
    #33933542
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
last_alien2Ничья :-(((
Какой позор на мою седую голову :-(((

хде деньги, Киса ?



Позволю себе мааааленькую цитату:

авторЕсли игрок, который начинает, НЕ ДУРАК, то он выигрывает ВСЕГДА
...
Рейтинг: 0 / 0
22.08.2006, 08:44
    #33933572
last_alien2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Крестики-нолики. Дополнительные алгоритмы.
Gluk (Kazan) last_alien2Ничья :-(((
Какой позор на мою седую голову :-(((

хде деньги, Киса ?



Позволю себе мааааленькую цитату:

авторЕсли игрок, который начинает, НЕ ДУРАК, то он выигрывает ВСЕГДА

Деньги в банке :-)

Не сыпь мне соль на рану. Ну тормознул... Что ж мне теперь харакири сделать?:-)))
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Крестики-нолики. Дополнительные алгоритмы. / 25 сообщений из 76, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]