Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [prolog]Задача про шары 
:(
    Опции темы
Sheb
Дата 21.1.2007, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.1.2007

Репутация: нет
Всего: нет



Заново создаю ... Ничего не хотел нарушать ,если по сути кто-нибудь поможет ,буду очень сильно благодарен и признателен ... 

1)Добрый день ! Огромная просьба каким-либо образом в решении одной задачи ... Ко вторнику кровь из носа как нужна ! Если кто поможет ,буду очень сильно признателен !!!

Условие задачи : Вдоль доски расположены лунки ,в каждой из которых лежит синий ,красный или белый шар ,за один ход можно менять местами два любых шара . Добиться того ,что сначала шли все красные шары , потом все белые,а потом все синие . Решить задачу за наименьшее число ходов . Нужно хронометрировать и анализировать решение задачи для стратегий поиска в глубину ,поиска в ширину и поска в глубину с итеративным погружением для нахождения кратчайшего пути .Проанализировать эффективность ,безопасность и полноту решения . 

Очень прошу ,друзья ...!


2)И еще один вопрос возник ... Вот в книге Братко обнаружил решение задачи "разбиения простого списка по признаку первый-второй " ... Если запускать эту программу ,то в первом списке ,где как раз находятся все "первые" выводится мусор . Второй же список правильный ... Не подскажете ,в чем ошибка ? 
Фрагмент программы на прологе :

разбиениесписка( [ ], [ ], [ ]).                           % Разбивать нечего

разбиениесписка( [X], [X], [ ]).
                            % Разбиение одноэлементного списка

разбиениесписка( [X, Y | Список], [Х | Список1],
                                [Y | Список2]) :-
    разбиениесписка( Список, Список1, Список2).

PM MAIL   Вверх
Artemios
Дата 21.1.2007, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 2
Всего: 50



Цитата(Sheb @  21.1.2007,  01:29 Найти цитируемый пост)
Если запускать эту программу ,то в первом списке ,где как раз находятся все "первые" выводится мусор .


Как это не смешно, но в записи
Цитата(Sheb @  21.1.2007,  01:29 Найти цитируемый пост)
разбиениесписка( [X, Y | Список], [Х | Список1],
                                [Y | Список2]) :-
    разбиениесписка( Список, Список1, Список2). 

первая переменная X -- английская икс, вторая Х -- русская хэ. Соответственно получается, что это разные переменные. Так как для построения первого списка используется неунифицированная переменная, то соответственно в списке и получаешь мусор. При замене русской хэ на английскую икс, или наоборот, все работает правильно.

По поводу задачи -- посмотри в том же Братко различные способы упорядочения (сортировки) списка, ибо твоя задача -- именно упорядочение и есть (замени слова красный, синий, белый на цифры 1,2,3)

Это сообщение отредактировал(а) Artemios - 21.1.2007, 03:41


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Artemios
Дата 23.1.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 2
Всего: 50



Цитата(Sheb @  21.1.2007,  01:29 Найти цитируемый пост)
за один ход можно менять местами два любых шара .

Под задачу сортировки с этим условием подходит метод пузырьковой сортировки.
Код

после(синий,белый).
после(синий,красный).
после(белый,красный).

перестановка([X,Y|T],[Y,X|T]):-
    после(X,Y),!.

перестановка([X|T],[X|T1]):-
    перестановка(T,T1).

пузырьковая_сортировка(L,L1):-
     перестановка(L,LL),
     !,
     пузырьковая_сортировка(LL,L1).
пузырьковая_сортировка(L,L).


и делаем проверку:
Цитата

?- пузырьковая_сортировка([белый,красный,синий,красный,белый,синий],Доска).

Доска = [красный, красный, белый, белый, синий, синий] 

Yes
?- 


А вот с этим:
Цитата(Sheb @  21.1.2007,  01:29 Найти цитируемый пост)
Нужно хронометрировать и анализировать решение задачи для стратегий поиска в глубину ,поиска в ширину и поска в глубину с итеративным погружением для нахождения кратчайшего пути .Проанализировать эффективность ,безопасность и полноту решения . 

я ничего не понял smile


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Sheb
Дата 23.1.2007, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.1.2007

Репутация: нет
Всего: нет



Artemios

Спасибо ОГРОМНОЕ за задачу ,очень благодарен!!!!!!! Насчет хронометризации и анализа уточню у препода ,что он там имел в виду и отпишусь smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1087 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.