![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Micher |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.1.2006 Где: г. Ижевск Репутация: нет Всего: нет |
Люди добрые, очень нужно решить задачи. Времени на изучение совсем нет.
Может кто-то знает решения, или уже имеет готовые, отзовитесь. Очень нужна ваша помощь! 1) Дан ориентированный граф. Каждая вершина нагружена числом (стоимость прохождения через вершину). Необходимо найти самый кооткий путь (между заданными вершинами), стоимость которого не превышает указанной суммы. 2) Алеша, Боря, Гриша нашли в земле сосуд. Алеша предположил, что это греческий сосуд 5 века, Боря, что сосуд финский 3 века, Гриша - не греческий 4 века. Каждый мальчик прав только в одном случае. 3) На вход подается список целых чисел. Построить из них бинарное дерево (если это возможно), обладающее следующим свойством: корень любого поддерева является суммой чисел, находящихся на узлах непосредственных |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 6 Всего: 78 |
Модератор: Пожалуйста, один топик - один вопрос.
-------------------- Ll 2 |
|||
|
||||
| Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
Проверка:
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
| Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
используем:
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
| Micher |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.1.2006 Где: г. Ижевск Репутация: нет Всего: нет |
Artemios, я так понимаю решение для 6 вершин только. А возможно ли решение с неограниченным числом вершин графа?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
||||
|
||||
| Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
Решение -- для произвольного числа вершин и ребер, заданного фактами с предикатами "вершина" и "ребро". В принципе, весь граф можно было подавать на вход, например парой списков, а в правилах делать разбор этих списков. Либо организовать диалог с пользователем с динамическим добавлением фактов в базу данных... P.S. Кстати, я тут подумал, что с программистской точки зрения правило "цена" лучше переписать так:
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
P.P.S.
А также для "поиск_мин_путь":
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| Artemios |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
У меня Турбо нет, поэтому проверить все равно не смогу. Попробую дать общие рекомендации:
- переобозвать все предикаты и переменные (переменные -- с большой буквы которые) латинскими буквами - буквы, используемые для имен вершин графа, заключить в кавычки - в некоторых местах я использовал одинаковые имена для разных предикатов -- отличие по количеству аргументов -- их надо будет назвать по-разному (это предикаты цена и поиск_мин_путь в моих постах от 20.12.2006, 10:56 и 20.12.2006, 11:34) - все написанные мной факты и правила заключить в секцию clauses - перед секцией clauses поместить секцию predicates, в которой описать типизацию каждого используемого предиката, то есть описать типы аргументов для каждого предиката (здесь у тебя будут использоваться целые, строки, списки строк, списки списков строк), составные типы надо перед этой секцией описать в секции domains, например:
- после секции clauses поместить секцию goal, в которой пишется конечная цель, которой программа должна достигнуть, используя описанные выше правила, например я делал такую проверку:
а тебе нужно будет что-то вроде такого:
Добавлено @ 18:23 Опа, модераторы уже удалили просьбу переписать на Турбо... Это сообщение отредактировал(а) Artemios - 18.1.2007, 18:39 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||
|
|||||||
| Micher |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.1.2006 Где: г. Ижевск Репутация: нет Всего: нет |
Вот, что у меня получилось после преобразований:
Не очень мне ясно, как в predicates определить оставшиеся правила и факты. И, на сколько я помню, в Турбо Прологе нет предиката member. Помогите плиз, чуть чуть совсем осталось. |
||||
|
|||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
Аяй, вспомнил, что у меня в списках встречаются разнотипные данные, что Турбо/Вижл Прологи не позволяют
Хотя, это легко поправимо, т.к. эти данные встречаются только в виде пары [Путь,Длина], вместо которой надо будет ввести какой-нибудь функтор, немножко подумаю и позже допишу. Пока что member:
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 2 Всего: 50 |
это я прогнал
также замени в 56 и 62 строках приведенного тобой выше кода имя предиката find_minimal_path на find_minimal_path2 И еще вопрос: а findall в Турбо есть? -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Модератор: Название темы должно отражать ее суть!
|
|||
|
||||
| Micher |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.1.2006 Где: г. Ижевск Репутация: нет Всего: нет |
Хорошо. Спасибо огромное! Сейчас всё подставлю. Что касается findall, то в Турбо Прологе он есть. |
||||
|
|||||
| Micher |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.1.2006 Где: г. Ижевск Репутация: нет Всего: нет |
Ругается на строку:
На Pr3, мол он не обьявлен. А что кстате значит is, может знак = лучше поставить? |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |