Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 17:02   #11
Сурка
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 32
По умолчанию

Цитата:
Алгори́тм имита́ции о́тжига (англ. Simulated annealing) — общий алгоритмический метод решения задачи глобальной оптимизации, особенно дискретной и комбинаторной оптимизации. Один из примеров методов Монте-Карло.
Монте-Карло и Лас Вегас - это вероятностные алгоритмы. но разные.
а рекурсивный сам по себе...
так?
Сурка вне форума Ответить с цитированием
Старый 25.05.2010, 17:08   #12
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Сурка! Объясни мне, что значит рекурсивный алгоритм??? Рекурсивный вызов функции - это я понимаю! А уж по какому алгоритму работает функция - сам(а) отжигай!!!
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 25.05.2010, 17:15   #13
Сурка
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 32
По умолчанию

в данном случае
Цитата:
рекурсивный алгоритм решения помещает ферзя на первой клетке первой вертикали, а затем вызывая себя для того, чтобы поставить ферзя на вторую горизонталь. если в какой-то момент алгоритму не удается найти положения для очередного ферзя на очередной горизонтали, то алгоритм возвращается на предыдущий шаг и пробует другое размещение ферзя на предыдущей строке.
вот как-то так
Сурка вне форума Ответить с цитированием
Старый 25.05.2010, 23:55   #14
sabbathist
Пользователь
 
Регистрация: 23.07.2009
Сообщений: 66
По умолчанию

Блин. так это поиск в глубину банальный.
O(n)
sabbathist вне форума Ответить с цитированием
Старый 26.05.2010, 00:26   #15
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Не парьтесь вы, пишите Лас-Вегас (довольно доступное объяснение з Вики:
Цитата:
Допустим, у нас есть некий вероятностный алгоритм A, который с определенной вероятностью дает верный результат. Если существует возможность алгоритмически проверить результат алгоритма A на корректность (скажем, с помощью алгоритма K), то можно выполнять алгоритм A до тех пор, пока проверка не установит, что результат верен.
) и не заморачивайтесь рекурсией и всем остальным.
LeBron вне форума Ответить с цитированием
Старый 26.05.2010, 19:08   #16
Сурка
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от sabbathist Посмотреть сообщение
Блин. так это поиск в глубину банальный.
это который рекурсивный?

Цитата:
Сообщение от LeBron Посмотреть сообщение
Не парьтесь вы, пишите Лас-Вегас и не заморачивайтесь рекурсией и всем остальным.
так я и не заморачиваюсь ) мне именно Лас Вегас нужен.

так нет ни у кого уже написанной программки?
Сурка вне форума Ответить с цитированием
Старый 26.05.2010, 20:56   #17
sabbathist
Пользователь
 
Регистрация: 23.07.2009
Сообщений: 66
По умолчанию

Да, это поиск в глубину пишется рекурсией. Программки нет, но там несложно, поверьте)
O(n)
sabbathist вне форума Ответить с цитированием
Старый 26.05.2010, 21:10   #18
Сурка
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 32
По умолчанию

так мне же не поиск в глубину нужен, а Лас Вегас
Сурка вне форума Ответить с цитированием
Старый 31.05.2010, 18:59   #19
Сурка
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 32
По умолчанию

объясните мне, пожалуйста, что функция uniform делает?
Код:
Queens(result)
result содержит номера вертикалей для ферзей
с соответствующих горизонталей
возвращает 1 в случае успеха и 0 в случае неудачи
row=l
repeat
// ферзи уже расставлены в горизонталях l..row-l
spotsPossible=0
for i=l to 8 do
if клетка (row.i) атакована then
spotsPossible=spotsPossible+l
if uniform(l,spotsPossible)=l then
try=i
end if
end if
end for
if spotsPossible>0 then
result[row]=try
row=row+l
end if
return  (spotsPossible>0)
Цитата:
... Следующий оператор if выглядит несколько странно, но посмо-
трим, что происходит, если опустить первую горизонталь, на которой
не атакована ни одна клетка. На первой вертикали функция uniform
генерирует случайное число между 1 и 1, т.е. 1, поэтому переменная try
будет указывать на первую вертикаль. Во второй вертикали uniform
генерирует число между 1 и 2, которое с 50%-ной вероятностью будет
единицей и с 50%-ной вероятностью двойкой, поэтому вероятность то-
го, что новым значением переменной try станет двойка, равна 50%. В
третьей вертикали uniform генерирует число между 1 и 3; это число с
вероятностью 33% будет 1, и также с вероятностью 33% значение try
станет равно 3. Окончательно мы заключаем, что для каждой из сво-
бодных вертикалей вероятность быть опробованной на данном проходе
равна 1/spotsPossible.
Сурка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конкурс для программистов - 6 ферзей Zealint Свободное общение 13 11.05.2010 11:12
Найти расстановку восьми слонов на шахматной доске WhiteKuz Общие вопросы Delphi 1 30.04.2010 12:25
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 13:07
Вопрос по организации поиска и расстановки меток Melifaro Компоненты Delphi 4 01.11.2007 09:53