Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Помогите прогу по алгоритму поиска решений в глубину переделать по алгоритму в ширину
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Екатерина_93 Екатерина_93 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2014
По умолчанию Помогите прогу по алгоритму поиска решений в глубину переделать по алгоритму в ширину - 16.10.2014, 15:08

Здравствуйте! Помогите пожалуйста! Есть готовая правильная рабочая программа, реализующая задачу о двух кувшинах, написанная на Lisp по алгоритму поиска решений в пространстве состояний В ГЛУБИНУ. Нужно переделать чтобы работала по алгоритму поиска В ШИРИНУ !

Задача о двух кувшинах

Условие - Дан кувшин с водой емкостью N литров и пустой кувшин емкостью M литров. Требуется получить заданную емкость L литров (L<N и L<M). Воду можно либо выливать, либо переливать из одного кувшина в другой. (Кувшины можно полностью наполнять водой из неограниченного pезеpвуаpа). Значения N, M, L вводятся с клавиатуры, например, соответственно: 5, 2, 1

Немного теории : При поиске в глубину всегда раскрывается самая глубокая вершина в текущем фронте поиска. Процедура поиска в глубину отличается от процедуры поиска в ширину тем, что дочерние вершины, получаемые при раскрытии вершины x , помещаются в начало списка OPEN ,то есть принцип формирования списка open соответствует стеку, когда в алгоритме поиска в ширину принцип формирования списка OPEN соответствует очереди.

Сделать нужно до 23.10.14

Последний раз редактировалось Екатерина_93; 16.10.2014 в 15:13
Ответить с цитированием
  (#2 (permalink)) Старый
Екатерина_93 Екатерина_93 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2014
По умолчанию 16.10.2014, 15:08

lisp Код:
(defun lab5()
    (princ "N M L: ")

    (let* ((n (read *standard-input*))(m (read *standard-input*))(l (read *standard-input*)) (open (list (list n 0))) (close nil) (x))
    (loop

        (if (equal open nil ) (return "Nea") )
        (setf x (first open))
        (setf close (append close (list x)))
        (if (equal (second x) l) (return "YES"))
        (setf open (cdr open))     
        (cond

            ( (and (not (equal (first x) 0)) (not (equal (second x) 0)))
                (if (> m (second x))
                    (setf open (append open (list (list (- (first x) (- m (second x))) m))))


                    (if (< (first x) (second x))
                        (setf open (list (list 0 (first x))))
                        (setf open (append open (list (list (first x) 0))))
                    )
                )
            )

            ( (and  (equal (first x) 0) (equal (second x) 0))
                (setf open (append open (list (list n 0)) ))
            )

            ( (and (not (equal (first x) 0)) (equal (second x) 0))
                (if (> (- (first x) m) 0)
                    (setf open (list (list (- (first x) m) m)))
                    (setf open (append open(list (list 0 (first x)))))
                )
            )

            ( (and (equal (first x) 0) (not (equal (second x) 0)))
                (setf open (append open (list (list n (second x))) ))
            )
        )
        (print x)
       
    )
    )
)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа реализации метода покоординатного спуска по алгоритму Настя7 Pascal 0 22.12.2012 19:44
Помогите написать программу поиска в глубину... yanaperry Pascal 0 19.12.2011 20:44
математическая программа по алгоритму Veshiy Задания за деньги 1 02.06.2011 09:50
Задание - найти самый короткий путь в графе по алгоритму Дейкстри blondik Haskell 1 29.03.2011 01:06
Помогите написать прогу m-блочного поиска и блок-схему к ней koshechka259 Pascal 0 23.12.2010 16:39
Помогите, пожалуйста, организовать поиск в глубину или в ширину в пространстве состояний для игры bonus.24ru Prolog 5 16.11.2009 23:23
кодирование текста по алгоритму Фано mizuko Pascal 10 23.10.2009 19:36
Нахождение прямых мо алгоритму Хафа MPA3b Pascal 0 19.11.2007 04:49
Помогите переделать прогу на Прологе van_shev Prolog 2 20.06.2006 17:37
Обход дерева в глубину и ширину L Вопросы начинающих программистов 0 12.12.2005 10:06
Написание архиватора по алгоритму RLE Sea Urchin C++ Builder 0 26.11.2005 00:15
Как работать по алгоритму DUAL Distributed Update Algorithm Anonymous Алгоритмы 0 11.04.2003 05:48



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов