Каталог решений - Граф(ин) 7.7.

Граф(ин) 7.7.

Граф(ин) 7.7.

В наличии

Что порождает чудовищ? 1С+Дракон или сны разума?

Категория:

Описание

При обсуждении рекурсивного обхода дерева я как-то высказался, что в семерке есть все, и показал модель дерева на базе СпискаЗначений — вполне известная модель. А как насчет модели ориентированного графа?

Будем строить модель на Справочниках. Поскольку граф содержит узлы (вершины) и дуги (ребра), так эти справочники и назовем.

Элемент справочника Дуги, т.е. дуга графа, характеризуется атрибутами (реквизитами):

  • Начало;
  • Конец;
  • Содержание.

Отложив Содержание в сторону (пока), вполне видим, что первым двум реквизитам можно назначить тип Справочник.Узлы.

У дуги два узла. А вот узел сопрягается с произвольным количеством дуг. Поэтому делаем справочник узлов двухуровневым, причем сами узлы будем представлять группами, а в качестве элементов группы будем указывать входящие/исходящие дуги. Итак, реквизит элемента справочника Узлы Дуга получает тип Справочник.Дуги. В качестве второго реквизита будем использовать флажок Входящая — на всякий случай.

Далее, мы же хотим хранить разные графы. Поэтому заведем реквизит группы справочника Узлы ИмяГрафа с типом Строка, хотя, наверное, можно было обойтись Наименованием. Хочется еще как-то типизировать узлы, поэтому заведем реквизит группы ТипУзла.

Все. Структура хранения модели графа готова (в семерке есть все!).

Ну, а при чем здесь Дракон из анонса?

Алгоритмы на языке Дракон (//sale.itcity.ru/blogs/1017/) представляются ориентированными графами из разнотипных узлов (ТипУзла), один из которых стартовый (специальный тип) и, возможно, несколько финишных (еще один специальный тип). Есть также ветвления, вычисления и т.д. Пожалуй пора к реквизитам группы добавить Алгоритм с типом пока что неопределенным.

Ну и наконец, реквизит Содержание, ранее отложенный в сторону. Переходя от узла к узлу Драконсхемы, мы явно или неявно тащим некий набор данных, который нужен для срабатывания следующего узла (например, чтобы произошло сравнение А>В, А и В должны быть проинициализированы). Вот описание этих данных мы и будем хранить в реквизите Содержание. Суть описания может быть различной, и это тема для Драконопроизводителей, остающаяся за рамками статьи…

 

has been added to your cart:
Оформление заказа