Max элемент дерева - Prolog

Узнай цену своей работы

Формулировка задачи:

Как найти максимальный элемент дерева листья которого целые числа.

Решение задачи: «Max элемент дерева»

textual
Листинг программы
domains
treetype = tree(integer, treetype, treetype); empty
 
predicates
max_n(treetype, integer)
max(integer,integer,integer)
 
clauses
 
max(M,N,N) :- N>=M, !.
max(M,N,M) :- M>=N, !.
 
max_n(tree(X,empty,empty),X) :- !.
max_n(tree(X,empty,R),Q) :- max_n(R,N), max(X,N,Q).
max_n(tree(X,L,empty),Q) :- max_n(L,N), max(X,N,Q).
max_n(tree(X,L,R),Q) :- max_n(L,LM), max_n(R,RM), max(RM,LM,QM), max(X,QM,Q).

Объяснение кода листинга программы

  1. В коде дано определение типа данных treetype, который представляет собой дерево, состоящее из трех элементов: integer (целое число), treetype (ссылка на treetype в самом дереве) и treetype (ссылка на treetype в самом дереве). Пустое дерево представлено пустой структурой empty.
  2. В коде также определены две предикатные функции: max_n и max. Функция max_n принимает два аргумента: treetype и integer, и используется для поиска максимального значения в дереве. Функция max принимает три аргумента: integer, integer и integer, и используется для сравнения двух чисел и возврата большего.
  3. В коде дано 4 утверждения (clauses), которые описывают, как функция max_n должна вести себя в различных ситуациях. В частности, они описывают, как функция должна обрабатывать пустое дерево, одиночный узел и узлы с двумя и тремя дочерними элементами.
  4. Утверждение 1 гласит: если узел является листовым узлом (т.е. не имеет дочерних элементов), то максимальное значение равно значению узла.
  5. Утверждение 2 гласит: если узел имеет только одного дочернего элемента, то максимальное значение равно максимуму из значения узла и значения его дочернего элемента.
  6. Утверждение 3 гласит: если узел имеет двух дочерних элементов, то максимальное значение равно максимуму из значения узла и значения его дочерних элементов.
  7. Утверждение 4 гласит: если узел имеет трех дочерних элементов, то максимальное значение равно максимуму из значения узла, значения его левого дочернего элемента, значения его правого дочернего элемента и значения его центрального дочернего элемента.
  8. Функция max используется в функции max_n для сравнения максимальных значений из различных дочерних элементов.
  9. В результате, функция max_n возвращает максимальное значение из дерева.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы