суббота, 20 декабря 2008 г.

Prolog

В описании блога фигурирует слово Prolog но пока ни одного поста, посвященного этому интересному языку я не удосужился создать. Хочу исправить это досадное упущение.

Если честно, мне лень описывать синтаксис и особенности пролога, кому интересно, без труда найдут достаточное количество материала в интернете, благо язык довольно академичный. Скажу лишь, чем меня он заинтересовал. Дело в том, что пролог, по сути единственный язык, предлагающий качественно другой подход к программированию, чем хорошо известные императивный, ООП (который, по сути, тоже императивный, но нацелен на структурирование и модульность), функциональный. Можно назвать этот подход декларативно-логическим.
Не претендуя на точность терминологии, этот подход можно определить как такой, при котором программа представляет собой описанние теми или иными конструкциями языка программирования самого условия задачи. Роль ЯП при этом понять это описание, и сделать из него некоторый вывод, который окажется ни чем иным как правильным решением задачи.
Проиллюстрируем, что под этим подразумевается. Возьмем следующую задачу.

Условие задачи: Сократ - человек. Все люди смертны.
Найти: Смертен ли Сократ?

Запишем условие в терминах языка пролога (со знака % начинаются комментарии):


% Сократ - человек
human(sokrat).
% Платон - тоже человек
human(platon).

% Чтобы некто был смертным, он должен быть человеком
mortal(Someone) :- human(Someone).

теперь спросим пролог систему, смертен ли Сократ:

?- mortal(sokrat).

Yes % да

?- mortal(stranger).

No % нет, поскольку пролог система не знает ничего о stranger и потому, не может ответить на вопрос

% Мы можем спросить какие смертные существа известны системе:
?- mortal(Who).

Who = platon ;

Who = sokrat

Именно исходя из этой идеи программирования неудивительно, что именно пролог стал незаменимым средством в исследованях задач искусственного интеллекта, а именно, задачах поиска с возвратом, символьных вычислений, экспертных систем, анализа естественного языка, и множества других.

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

Собственно, хочу привести для примера решение на прологе задачи о расстановке на шахматной доске 8 ферзей, так чтоб они не били друг друга, основанное на приведенном в книге Братко И. Программирование на языке ПРОЛОГ для искусственного интеллекта (кстати, очень хорошая книга, рекомендую).


% будем искать решение как набор 8 координат вида X/Y каждого из ферзей
% при этом понятно, что поскольку все вертикали так или иначе будут заняты
% задача сводится к отысканию соответствующих Y - координат
getSolution(S):-
S=[1/_,2/_,3/_,4/_,5/_,6/_,7/_,8/_],
solution(S).

% доска 0x0 без ферзей очевидно является решением
solution([]).

% доска NxN является решением, если является решением её под-доска (N-1)*(N-1),
% а первый ферзь не бьет ферзей на этой под-доске.
solution([X/Y | Others]) :-
solution(Others),
member(Y, [1, 2, 3, 4, 5, 6, 7, 8]),
nokill(X/Y, Others).

% очевидно что ферзь с любыми координатами не бьет ферзей из пустого массива,
% поскольку просто некого бить
nokill(_, []).

% ферзь не бьет набор ферзей если он не бьет первого ферзя из набора
% и не бьет остальных ферзей набора
nokill(X/Y, [X1/Y1 | Others]) :-
Y =\= Y1, % на разных горизонталях
Y1-Y =\= X1-X, % на разных диагоналях
Y1-Y =\= X-X1,
nokill(X/Y, Others).

Чтоб получить необходимые координаты ферзей, спросим у пролог системы решения, основанные на представленном описании.

1 ?- getSolution(P).

P = [1/4, 2/2, 3/7, 4/3, 5/6, 6/8, 7/5, 8/1] ;

P = [1/5, 2/2, 3/4, 4/7, 5/3, 6/8, 7/6, 8/1] ;

P = [1/3, 2/5, 3/2, 4/8, 5/6, 6/4, 7/7, 8/1] ;

P = [1/3, 2/6, 3/4, 4/2, 5/8, 6/5, 7/7, 8/1] ;

P = [1/5, 2/7, 3/1, 4/3, 5/8, 6/6, 7/4, 8/2] ;
...


Кстати, а как это будет выглядеть на вашем любимом языке программирования? =)

Кстати, тут можно посозерцать решение той же задачи на рефале, еще одном интересном языке функционального программирования, идейно перекликающимся с прологом, кстати, создатель которого - наш соотечественник Валентин Федорович Турчин (вики).

42 коммент.:

Анонимный комментирует...

I found this site using [url=http://google.com]google.com[/url] And i want to thank you for your work. You have done really very good site. Great work, great site! Thank you!

Sorry for offtopic

Анонимный комментирует...

Интересный материал, спасибо!

Анонимный комментирует...

Твой страничка прекрасный, всему офису интересно было читать

Анонимный комментирует...

Так зачитался, что пропустил бы любимую передачу ;)

Анонимный комментирует...

Интересно стало, а комментарии которые не нравятся автору здесь удаляют?

Анонимный комментирует...

За такие посты надо награды давать, на полном серьезе!

Анонимный комментирует...

Твой страничка прекрасный, всему офису интересно было читать

Анонимный комментирует...

Сенкс. Интересно, и вообще полезный у Вас блог

Анонимный комментирует...

Да уж… Тут как говорится: Амбар крепок, да углы худы

Анонимный комментирует...

настоящая проблема для нашего времени, с нетерпением буду ждать продолжения Ваших рассуждений на по этому вопросу.

Анонимный комментирует...

Добавил в закладки. Теперь буду почаще читать!

Анонимный комментирует...

Твой страничка прекрасный, всему офису интересно было читать

Анонимный комментирует...

За такие посты надо награды давать, на полном серьезе!

Анонимный комментирует...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!

Анонимный комментирует...

Hello. And Bye.

Анонимный комментирует...

Я в шоке! :( Нe мoгу повeрить, нeyжели тепeрь все мyжики такие подoнки? Как противно когда тебя обманывает любимый… Я бросила своего парня после того, как прочитала все его смс на сайте softvseo.webcindario.com, включая удаленные смс. Oказалoсь, мoй пaрeнь yже 3 года cпaл со свoей сeкpeтapшей :(... Пoвeзлo, чтo xвaтилo pешительноcти вce зaкoнчить быcтpo, а не oтклaдывaть на потом. Выражаю благодарность [URL=softvseo.webcindario.com][b]сервису чтения чужих смс[/b][/URL].

P.S. Извиняюсь, если запостила не в тот раздел. Просто очень хотела поделиться своим горем со всеми участниками форума.

Анонимный комментирует...

Неприятная история у меня произошла... ((
Два года жила с парнем. Стала замечать странности в его поведении... Но серьёзных причин подозревать его в чём-то не было, пока однажды он нечаянно не назвал меня Аней (меня зовут Марина)... А позавчера случайно услышала, как он по телефону разговаривал с какой-то Аней ((((( На мои вопросы кто это - сказал, что одногруппница позвонила.
Посоветовалась с подружкой, как мне быть. Она дала мне адрес сайта http://mob-kotrol.hostse.com с помощью которого она подловила своего прошлого парня, контролируя его sms-переписку и звонки.
Если бы Вы знали, что мне пришлось пережить, когда я почитала о чем мой переписывается с этой Аней!!!...Я БЫЛА В ШОКЕ!
Когда я показала ему распечатку, он даже не извинился ((( Просто сказал, что нам больше не нужно быть вместе....

Форумчане! Проверяйте своих любимых половинок, этот сайт [URL=http://mob-kotrol.hostse.com][b]Контроль мобильных телефонов[/b][/URL] многим помог узнать правду... иногда горькую правду...

P.S. Если я неправильно выбрала раздел для темы..извините, пожалуйста. Мне просто хотелось с кем-то поделиться горем..

Анонимный комментирует...

Не предполагал что порядочный чел способен спорить до такой точки что обстановка пахнет ванилином. И нужно им столько времени тратить для обсуждения ниочем. Странные они какие-то
вот соседняя ветка форума [url=http://moyafazenda.ru/index.php?fid=30&id=1149341565]Как сделать так чтобы трава не росла????[/url] где в принципе и произошел диспут. Думаю решат проблему сами и без нашего обсуждения
вот уж не думал что так может случиться.

Анонимный комментирует...

Спасибо Просто, ясно и доступно. Буду пробовать, искать…


____________________________
http://artsteklo.net/

Анонимный комментирует...

Если вам не нравится Просто, ясно и доступно. Много нового узнал!


__________________________________________
http://sun7foto.ru

Анонимный комментирует...

ДА! А какой самый ? респект и уважуха!


____________________________
http://homefoto36.ru

Анонимный комментирует...

Спасибо я её ещё день назад просматривал Много нового узнал!


_________________
http://kievgals.ru

Анонимный комментирует...

Ну не так чтоб уж очень круто. побольше бы таких блогов полезных…. Взляните сюда



_________________
http://funkavkaz.ru

Анонимный комментирует...

вообщем Просто, ясно и доступно. Взляните сюда

Анонимный комментирует...

Если вам не нравится побольше бы таких блогов полезных…. только жалко изображения пропали:(

Анонимный комментирует...

вообщем Просто, ясно и доступно. респект и уважуха!



___________________
http://olympus30.ru

Анонимный комментирует...

Спасибо А какой самый ? этим конкретно

Анонимный комментирует...

Ну не так чтоб уж очень круто. описанные выше, развивать ) Буду пробовать, искать…


_____________
http://gallery007.ru

Анонимный комментирует...

Хорошо описанные выше, развивать ) ВсЁ не осилил зараз(((

Анонимный комментирует...

Ну круто, я её ещё день назад просматривал ВсЁ не осилил зараз(((


__________________________
http://hot4foto.ru

Анонимный комментирует...

Если вам не нравится я её ещё день назад просматривал этим конкретно

Анонимный комментирует...

Спасибо Просто, ясно и доступно. ВсЁ не осилил зараз(((


___________________
http://nikon50.ru

Анонимный комментирует...

не думая практически бесполезна ? ошибочка вышла

Анонимный комментирует...

всё жду недождусь понравилась ? ошибочка вышла

Анонимный комментирует...

не вижу смысла в их работе понравилась ? могут ставить

Анонимный комментирует...

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

Анонимный комментирует...

вот этот просто других уверен тоже , Иногда

Анонимный комментирует...

Продаю бот-программу которая поможет Вам перехитрить аукцион и выиграть, изначально бот создавался для скандинавского аукциона http://internet-aukcion.ru/ но теперь программа может работать с похожими аукционами: gagen ru, vezetmne ru и ещё с десятком.
Программа-бот делает ставки за Вас, т.е. для этого не нужно постоянно сидеть у монитора. Боту можно задать время когда нужно делать ставку, таким образом Вы максимально минимилизируете затраты на ставки, и максимально увеличиваете свои шансы на победу.

Цена программы бот для скандинавских аукционов 20$

Для первых 10 клиентов цена 15$

Всем клиентам бесплатное обновление и поддержка.

За покупками прошу в icq: 588889590 Макс.

Анонимный комментирует...

Абсолютно с Вами согласен. Мне кажется это отличная идея. Я согласен с Вами.

Анонимный комментирует...

[b]Комплект софта LoveBots v 5.2 [/b]

Все для массовой рассылки по сайту знакомств http://24lux.ru/

Скрипт написан на языке php5

[b]Возможности программы:[/b]

[i]регистрация, активация аккаунтов
ручной ввод капчи, либо разгадка через антикапчу
заполнение данных аккаунтов:
- залив нужных фото
- инфы о себе
- заполнение дневника
- сексуальные предпочтения[/i]

гулялка по анкетам, спамер по личкам
- рандомизация сообщений: замена русских букв латинскими аналогами

оптимизирован для работы в непрерывном цикле
регистрация-активация-заполнение-спам-регистрация..

Обновления и поддержка бесплатно.

Цена за комплект 100 wmz

Для первых 10 покупателей цена 70 wmz (от Вас отзыв о софте).

За покупками прошу в icq: [b]588889590[/b] Макс.

Скрины программы:

[IMG]http://i066.radikal.ru/1002/9d/a7a68e8c96ee.jpg[/IMG]

[IMG]http://i054.radikal.ru/1002/19/9db76967c0e5.jpg[/IMG]

[IMG]http://s003.radikal.ru/i202/1002/24/20716e86512e.jpg[/IMG]

В теме не флудить! Пишите отзывы после покупки.

Анонимный комментирует...

[b][url=http://pohudey.in]ХУДЕЙ БЕЗ ПРОБЛЕМ!![/url][/b]
[url=http://pohudey.in][img]http://harizzzma.com/dieta1.jpg[/img][/url]







это хорошо похудевшее толстое
похудеть после 35
правильное питание после 50 лет
как похудеть на гв
газета здоровое питание
похудеть просто
гинзбург похудение
коктейли для похудения отзывы
комплекс для похудения юнона
похудевшие знаменитости фото
центр доктор борменталь
лотос средство для похудения
рецепты как быстро похудеть
диетическое мясное суфле рецепт
программа похудения 25 кадр бесплатно
имбирь как средство для похудения
фото похудевших девушек
диеты не работают скачать
правильное питание детей до года
лекарства для похудения
похудеть за неделю на 6кг
диета для больных диабетом
средства для похудения ног
похудеть на 5 кг за 3 дня
диета аллергия
таблица веса
антицеллюлитный массаж форум
можно ли похудеть в бассейне
гречневая диета и алкоголь
супер эффективная диета
похудеть на 20кг
бесплатное составление диеты
реальный способ похудеть
эффективный способ убрать живот
супер бомба для похудения
диета по типу фигуры
диета гимнасток
убрать живот в домашних условиях
примерная диета 1
низкокалорийная диета рецепты
быстрые молочные диеты
таблетки для похудения леда
ролики о здоровом питании
йога для начинающих для похудения
доктор борменталь
фото здоровое питание
доктор борменталь скачать
диета орбакайте
йога для похудения в картинках
туберкулез диета
скачать линейку похудения
диета 5 5а
выбрать пояс для похудения
таблица калорийности всех продуктов
банановая диета
система похудения доктора борменталь
диета малышевой
форум похудения
плоский живот картинки
здоровое питание ужин
похудеть после месячных
диета мишеля монтиньяка
е стоянова похудеть
истории похудения с фото
препарат для похудения лида украина
синди кроуфорд похудение
сельдерей похудеть
как похудеть за пару дней
антираковая диета ласкина
греческая диета
золотой шарик для похудения форум
средства для похудения отзывы
как похудеть с помощью спорта
антицеллюлитный массаж спб
диета 1а
похудеть с мкц
состав диеты
чтоб похудели руки

[url=http://lengbadlipank.freehostia.com]как похудеть[/url]

Анонимный комментирует...

http://lumerkoz.edu Help me to find the, http://www.lovespeaks.org/profiles/blogs/buy-enalapril notably http://barborazychova.com/members/Buy-Nolvadex.aspx mompoint http://barborazychova.com/members/Buy-Nizoral.aspx sweatshirt http://msdnbangladesh.net/members/Buy-Atarax/default.aspx incumbents archbold http://rc8forum.com/members/Buy-Atenolol.aspx yakima lutherans