![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какую библиотеку лучше использовать, для древоридных структур?
Erik1 © (2005-02-04 11:26:00)У меня неполностью древовидные структуры, а как бы несколько паралельных деревен. Причем у нескольких корней пожет оказатся одинаковый ID. Причем считываются они один раз из базы и больше неменяются, по ним происходит поиск правил. К примеру проверяется на возможность добавления водимый элемент, проверяется наличие этого элементы в корне дерева. Предположим, что нашли 3 root элемента, остальные деревя отбрасываем и при вводе следующего элемента, работаем только с этими 3 выбраными деревями. И так смускаемся в низ по дереву правил, попутно анализируются дополнительные поля.
Я сделал похожую вещь на основе масива, мне неочень понравилась моя реализация. Вот раздумываю пожет использовать библиотеку DeCAL наследника SDL, но там не реализованы деревя. Да и не всякая реализация подойдет, вобшем предлогайте варианты. Хочется сделать красиво.
Erik1 (2005-02-04 16:11:00) [1]Да потому, что прошло несколько месяцев и пришлось вспоминать как я это реализовал, а сомной еще человек работает. Так, что он должен месяц разбиратся в моих алгоритмах? У меня большое стремление к стандартизации наметилось, вот и ищу. А о DeCAL наследника SDL никто даже невысказался. В С++ она же используется и есть перевод для Delphi.
Digitman (2005-02-04 15:59:00) [2]
> незнаю как называются обычные деревя с произвольным количеством
> потомков
так и называются - "деревья".
но у тебя не одно дерево, а "лес" ..
опять же непонятно, зачем какую-то библиотеку искать ?
Erik1 (2005-02-04 15:52:00) [3]А по какому параметру искать, я незнаю как называются обычные деревя с произвольным количеством потомков?
TUser (2005-02-04 14:12:00) [4]Подбери подходящюю собственную реализацию. Короая понравится.
Erik1 (2005-02-04 13:46:00) [5]Конкретных проблем нет, просто подбираю подходящею библиотеку, поскольку собственая реализация ненравтся.
Digitman (2005-02-04 13:43:00) [6]
> Erik1 © (04.02.05 13:25) [5]
> to Digitman
> ID первичный ключ, Parent_id указатель на родителя
и родитель - это запись с ID, на который ссылается Parent_id доч.записи ?
тогда не понимаю, в чем проблема....
msguns (2005-02-04 13:42:00) [7]>Digitman © (04.02.05 12:58) [4]
>где у тебя здесь первичный, а где вторичный ключ ? что на что ссылается ?
"Кто на ком стоял ?" (Проф.Преображенский (c))
TUser (2005-02-04 13:41:00) [8]Все зависит от твоей задачи. Реализация деревьев через массив в большинстве случаев не является оптимальной. Если речь идет про хранение дерева в памяти для к-л обработки - то чаще всего применяют связные структуры. Про сие есть статья на алголисте + много информации в литературе (Ахо, Хопкрофт, Ульман, потом - Вирт, еще есть Кнут). Кода не привожу, т.к. про это действительно много написано, а кроме того совсем недавно это обсуждали здесь, и приводили листинги.
Если интересует хранение дерева в БД, то есть статья на этом сайте. В принципе также надо хранить ссылки на родителей и потомков, возможно - и на след. брата, как и при связной реализации. В принцыпе также есть и иерархические базы данных, но в силу ряда причин они не имеют столь широкого распространения, как релиционные.
Erik1 (2005-02-04 13:25:00) [9]to Digitman
ID первичный ключ, Parent_id указатель на родителя, Ref_id идентификатор устройства.
Digitman (2005-02-04 12:58:00) [10]
> Структура таблицы такова:
> ID | Ref_id | Count | Reqired | Parent_id
где у тебя здесь первичный, а где вторичный ключ ? что на что ссылается ?
Анонимщик (2005-02-04 12:57:00) [11]Я из твоего описания не понял ничегошеньки. Какие правила, какой еще водимый элемент? Где ищем? Можешь нормально написать?
Erik1 (2005-02-04 12:46:00) [12]Немного неправильно неписал, уникальный ID конечно есть, он он создан искуствено. Тоесть имеется некое устройство, сылка не нее это REF_ID и REF_ID может встречатся несколько раз, обазуя 3 различных дерева. Структура таблицы такова:
ID | Ref_id | Count | Reqired | Parent_id
Это я вчера придумал а поле Level выбросил. А что насчет SDL http://gurin.tomsknet.ru
Digitman (2005-02-04 12:32:00) [13]
> Причем у нескольких корней пожет оказатся одинаковый ID
а это уже логическая ошибка.
> Причем считываются они один раз из базы
что за база такая дурная, имеющая дублированные перв.ключи записей в таблицах, описывающих деревья ?