Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизКакую библиотеку лучше использовать, для древоридных структур? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c