Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Алгоритм прямой волны.

Читайте также:
  1. C. Ветвящихся алгоритмов
  2. CТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
  3. I. Упругие волны. Электромагнитные волны. Геометрическая оптика.
  4. III. Алгоритмическая конструкция ветвление и ее использование в языке Visual Basic
  5. IV. Алгоритмическая конструкция цикл и ее использование в языке Visual Basic
  6. IV[17]. КАК ИЗУЧАТЬ? АЛГОРИТМ ДЕЯТЕЛЬНОСТИ
  7. LINUX|| Алгоритм замещения страниц в ОС Linux.
  8. А) прямой канал
  9. АЛГОРИТМ
  10. АЛГОРИТМ

Алгоритмы поиска решений в ПРИЗе.

 

Алгоритм прямой волны.

 

Пусть есть набор аксиом:

Задача: B

Доказать: ├ В.

 

Предположим, что все ni=1, берем список всех различных переменных {z1,…, zm}.

Тогда ФТ может быть описана графом. Каждой переменной соответствует вершина.

 

 

• z1

•Y0

•z4

•z2

 

X0

•z3

 

Если имеется аксиома X Y, то проводим ребро из вершины, соответствующей X, в вершину, соответствующую Y. Очевидно, что выводимость из аксиом формулы X0 Y0 равносильна ответу на вопрос, есть ли путь в графе между вершинами, соответствующими X0 и Y0? То есть, наша задача сводится к поиску пути в ориентированном графе.

Задача решается с помощью алгоритма прямой волны.

Источник X0 (отсюда ищем путь). Выписываем все переменные, в которые можно перейти из X0 за один шаг (фронт волны). Если фронт пустой, то задача не имеет решения. Если Y0 попадает во фронт, то задача решена положительно. Если Y0 не попадает во фронт, то продолжаем работу алгоритма.

k<m

 

Алгоритм всегда закончит свою работу.

Алгоритм переносится на ФТ, но в качестве ядра берется множество всех .

 

На каждом этапе алгоритма просматриваем все правила вывода. Если все посылки некоторого правила уже выведены, а заключение ещё нет, то включаем его во фронт. Если фронт пустой, то задача не имеет решения. Если Y0 попадает во фронт, то задача решена положительно. Если Y0 не попадает во фронт, то продолжаем работу алгоритма.

Сложность алгоритма прямой волны: , где , m – число этапов (фронтов волны), т.е. алгоритм работает квадратичное время.

 

Алгоритм со счётчиками.

Для каждой аксиомы вводим счётчик , который на каждом этапе будет равен количеству ещё не выведенных переменных в посылке аксиомы.

В начале работы

Пусть М – число переменных, N – число аксиом.

Заведем следующие массивы:

1) ПЕР­_В_ЛЕВ_Ч [1:M]

значение i-той компоненты - список номеров аксиом < >, в левую часть которых входит переменная zi;

2) ПЕР_ПРАВ_Ч [1:N]

значение i-той компоненты - номер переменной, которая является правой частью i- той аксиомы;

3) ВЫВ_П [1:M] - булевский массив.

i- тая компонента равна t, если переменная zi выведена, и равна f, если переменная zi еще не выведена.

4) П_В_СПИСКЕ [1:M] –булевский массив.

i- тая компонента равна t, если переменная zi выведена, но не «обработана» и включена в список для «обработки», и равна f, если переменная zi не находится в списке для обработки.

Алгоритм:

Составляем список S для обработки переменных, куда в начало помещаем .

Отметим их в массиве П_В_СПИСКЕ [1:M], чтобы не повторятся, и в массиве ВЫВ_П [1:M], что они уже выведены.

Берём последнюю переменную p из списка S и «обрабатываем» ее, т.е. находим в массиве ПЕР_В_ЛЕВ_Ч номера аксиом, в левую часть которых она входит, и уменьшаем на 1 соответствующие счётчики. Если некоторый счетчик становится равным 0, то берём переменную из правой части соответствующей аксиомы (в массиве ПЕР_ПРАВ_Ч). Если она не в списке для обработки, то метим ее, как выведенную, и помещаем в список для обработки. После этого переменная p исключается из списка S,

и т.д.

Алгоритм работает, пока список S не станет пустым.

Если по окончании алгоритма переменная Y0 помечена как выведенная в массиве ВЫВ_П [1:M], то «успех», иначе – «неудача».

 

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

Таким образом, алгоритм работает линейное время.

 

 




Дата добавления: 2015-01-12; просмотров: 34 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Классификация услуг, оказываемых аудиторскими фирмами.| Влияние субъективного фактора при устном переводе

lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав