Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Какую библиотеку лучше использовать, для древоридных структур?   Найти похожие ветки 

 
Erik1 ©   (2005-02-04 11:26) [0]

У меня неполностью древовидные структуры, а как бы несколько паралельных деревен. Причем у нескольких корней пожет оказатся одинаковый ID. Причем считываются они один раз из базы и больше неменяются, по ним происходит поиск правил. К примеру проверяется на возможность добавления водимый элемент, проверяется наличие этого элементы в корне дерева. Предположим, что нашли 3 root элемента, остальные деревя отбрасываем и при вводе следующего элемента, работаем только с этими 3 выбраными деревями. И так смускаемся в низ по дереву правил, попутно анализируются дополнительные поля.
 Я сделал похожую вещь на основе масива, мне неочень понравилась моя реализация. Вот раздумываю пожет использовать библиотеку DeCAL наследника SDL, но там не реализованы деревя. Да и не всякая реализация подойдет, вобшем предлогайте варианты. Хочется сделать красиво.


 
Digitman ©   (2005-02-04 12:32) [1]


> Причем у нескольких корней пожет оказатся одинаковый ID


а это уже логическая ошибка.


> Причем считываются они один раз из базы


что за база такая дурная, имеющая дублированные перв.ключи записей в таблицах, описывающих деревья ?


 
Erik1 ©   (2005-02-04 12:46) [2]

Немного неправильно неписал, уникальный ID конечно есть, он он создан искуствено. Тоесть имеется некое устройство, сылка не нее это REF_ID и REF_ID может встречатся несколько раз, обазуя 3 различных дерева. Структура таблицы такова:
ID | Ref_id | Count | Reqired | Parent_id
Это я вчера придумал а поле Level выбросил. А что насчет SDL http://gurin.tomsknet.ru


 
Анонимщик ©   (2005-02-04 12:57) [3]

Я из твоего описания не понял ничегошеньки. Какие правила, какой еще водимый элемент? Где ищем? Можешь нормально написать?


 
Digitman ©   (2005-02-04 12:58) [4]


> Структура таблицы такова:
> ID | Ref_id | Count | Reqired | Parent_id


где у тебя здесь первичный, а где вторичный ключ ? что на что ссылается ?


 
Erik1 ©   (2005-02-04 13:25) [5]

to Digitman
ID первичный ключ, Parent_id указатель на родителя, Ref_id идентификатор устройства.


 
TUser ©   (2005-02-04 13:41) [6]

Все зависит от твоей задачи. Реализация деревьев через массив в большинстве случаев не является оптимальной. Если речь идет про хранение дерева в памяти для к-л обработки - то чаще всего применяют связные структуры. Про сие есть статья на алголисте + много информации в литературе (Ахо, Хопкрофт, Ульман, потом - Вирт, еще есть Кнут). Кода не привожу, т.к. про это действительно много написано, а кроме того совсем недавно это обсуждали здесь, и приводили листинги.
Если интересует хранение дерева в БД, то есть статья на этом сайте. В принципе также надо хранить ссылки на родителей и потомков, возможно - и на след. брата, как и при связной реализации. В принцыпе также есть и иерархические базы данных, но в силу ряда причин они не имеют столь широкого распространения, как релиционные.


 
msguns ©   (2005-02-04 13:42) [7]

>Digitman ©   (04.02.05 12:58) [4]
>где у тебя здесь первичный, а где вторичный ключ ? что на что ссылается ?

"Кто на ком стоял ?" (Проф.Преображенский (c))


 
Digitman ©   (2005-02-04 13:43) [8]


> Erik1 ©   (04.02.05 13:25) [5]
> to Digitman
> ID первичный ключ, Parent_id указатель на родителя


и родитель - это запись с ID, на который ссылается Parent_id доч.записи ?

тогда не понимаю, в чем проблема....


 
Erik1 ©   (2005-02-04 13:46) [9]

Конкретных проблем нет, просто подбираю подходящею библиотеку, поскольку собственая реализация ненравтся.


 
TUser ©   (2005-02-04 14:12) [10]

Подбери подходящюю собственную реализацию. Короая понравится.


 
Erik1 ©   (2005-02-04 15:52) [11]

А по какому параметру искать, я незнаю как называются обычные деревя с произвольным количеством потомков?


 
Digitman ©   (2005-02-04 15:59) [12]


> незнаю как называются обычные деревя с произвольным количеством
> потомков


так и называются - "деревья".

но у тебя не одно дерево, а "лес" ..

опять же непонятно, зачем какую-то библиотеку искать ?


 
Erik1 ©   (2005-02-04 16:11) [13]

Да потому, что прошло несколько месяцев и пришлось вспоминать как я это реализовал, а сомной еще человек работает. Так, что он должен месяц разбиратся в моих алгоритмах? У меня большое стремление к стандартизации наметилось, вот и ищу. А о DeCAL наследника SDL никто даже невысказался. В С++ она же используется и есть перевод для Delphi.



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
14-1107255884
Футболер
2005-02-01 14:04
2005.02.20
Фетисов рулез!


3-1106462247
SeregaMan
2005-01-23 09:37
2005.02.20
Не могу убрать оконо запроса имени пользователя и пароля в TQuery


1-1107366366
td
2005-02-02 20:46
2005.02.20
access violation in module IDPDX32.DLL


4-1104863404
dms_main
2005-01-04 21:30
2005.02.20
Select text


10-1083934868
vk220
2004-05-07 17:01
2005.02.20
COM