Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.07.2006, 11:06
|
|||
|---|---|---|---|
|
|||
эффективный поиск листьев нижнего уровня |
|||
|
#18+
Есть n-арное дерево. Любой узел может иметь только одного предка, зато n-потомков. В дерево есессно могут добавляться новые узлы, а также удаляться. Задача: поддерживать в актуальном состоянии ссылки или указатели (что именно рояли не играет) на листья самого нижнего уровня. возможные варианты 1. хранить глубину в каждом узле, значит переиндексировать всё дерево при удалении ... в худшем случае корня 2. вычислять путь до корня при каждом новом добавлении и помечать как лист нижнего уровня? 3. проверять соседей до первого, у которого есть потомки, и НЕ помечать как лист нижнего уровня? 4. истина где-то рядом? :) мой кругозор на этом заканчивается идеи? критика? поможите, люди добрые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 10:29
|
|||
|---|---|---|---|
эффективный поиск листьев нижнего уровня |
|||
|
#18+
Может стоить просто выбрать такой из стандартных способов хранения дерева, при котором получение данной информации (последний ли уровень) - является тривиальной операцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 11:39
|
|||
|---|---|---|---|
|
|||
эффективный поиск листьев нижнего уровня |
|||
|
#18+
man_555_as_a_guestЕсть n-арное дерево. Любой узел может иметь только одного предка, зато n-потомков. В дерево есессно могут добавляться новые узлы, а также удаляться. Задача: поддерживать в актуальном состоянии ссылки или указатели (что именно рояли не играет) на листья самого нижнего уровня. возможные варианты 1. хранить глубину в каждом узле, значит переиндексировать всё дерево при удалении ... в худшем случае корня 2. вычислять путь до корня при каждом новом добавлении и помечать как лист нижнего уровня? 3. проверять соседей до первого, у которого есть потомки, и НЕ помечать как лист нижнего уровня? 4. истина где-то рядом? :) мой кругозор на этом заканчивается идеи? критика? поможите, люди добрые... это на 100% совпадает с механизмом, реализованым в СУБД "CACHE" (или M3-LITE - бесплатный) например, там сразу на каждом узле дерева уже есть признак - он самый нижний или еще нет и ряд эффективных команд для сшивания-раскраивания-анализа-навигации деревьев могу помочь c Вашей конкретной задачей mx@enters.eu ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 14:01
|
|||
|---|---|---|---|
|
|||
эффективный поиск листьев нижнего уровня |
|||
|
#18+
man_555_as_a_guestЕсть n-арное дерево. Любой узел может иметь только одного предка, зато n-потомков. В дерево есессно могут добавляться новые узлы, а также удаляться. Задача: поддерживать в актуальном состоянии ссылки или указатели (что именно рояли не играет) на листья самого нижнего уровня. Где поддерживать? В памяти, в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 15:15
|
|||
|---|---|---|---|
эффективный поиск листьев нижнего уровня |
|||
|
#18+
niknameГде поддерживать? В памяти, в БД? Пока что я выбрал путь поддержки и хранения сего "хозяйства" в памяти, а точнее, нацелился на Boost Graph Library . Основные причины: уже реализованные некоторые алгоритмы на графах, и однопользовательское приложение. Хотя, может быть я и не прав, и стоит повнимательней присмотреться к СУБД... или.. к XML? ;) Идея с БД, конечно, интересная, но в любом случае, важна эффективность. Насколько я понял Cache предоставляет свой собственный яп? Насколько сложно проходить в глубину граф при помощи SQL, или вообще, реализовывать некий алгоритм X на SQL? При всём этом БД предоставит единое хранилище для всех графов, тогда по мере роста объёма, насколько усложняться по времени алгоритмы? LordMADМожет стоить просто выбрать такой из стандартных способов хранения дерева, при котором получение данной информации (последний ли уровень) - является тривиальной операцией. Например? Поиск, операция, конечно, важная, но не за счёт полиномиального 'О ' остальных операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 15:27
|
|||
|---|---|---|---|
|
|||
эффективный поиск листьев нижнего уровня |
|||
|
#18+
man_555 niknameГде поддерживать? В памяти, в БД? Пока что я выбрал путь поддержки и хранения сего "хозяйства" в памяти, а точнее, нацелился на Boost Graph Library . Основные причины: уже реализованные некоторые алгоритмы на графах, и однопользовательское приложение. Хотя, может быть я и не прав, и стоит повнимательней присмотреться к СУБД... или.. к XML? ;) Идея с БД, конечно, интересная, но в любом случае, важна эффективность. Насколько я понял Cache предоставляет свой собственный яп? Насколько сложно проходить в глубину граф при помощи SQL, или вообще, реализовывать некий алгоритм X на SQL? При всём этом БД предоставит единое хранилище для всех графов, тогда по мере роста объёма, насколько усложняться по времени алгоритмы? LordMADМожет стоить просто выбрать такой из стандартных способов хранения дерева, при котором получение данной информации (последний ли уровень) - является тривиальной операцией. Например? Поиск, операция, конечно, важная, но не за счёт полиномиального 'О ' остальных операций. CACHE работает на глубину 64 уровня сотня деревьев до миллиона ветвей в каждом - проблем точно не будет по скорости дальше - не особо тестили язык CACHE - стандартный MUMPS например - взять следующую справа ПОЛНУЮ ветвь : i=$q(@i) где i - текущая ветвь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 15:35
|
|||
|---|---|---|---|
эффективный поиск листьев нижнего уровня |
|||
|
#18+
man_555Например? Поиск, операция, конечно, важная, но не за счёт полиномиального 'О ' остальных операций. Есть огромное количество способов хранения деревьев, и каждый имеет достоинства и недостатки, на эту тему есть масса книг и статей. Исходя из твоего вопроса, у меня возникло предположение, что ты используешь популярный (особенно в БД) подход: хранить в потомке ссылку на предка. При таком подходе изложенная тобой задача действительно актуальна, в чем и заключается один из недостатков такого подхода. Чтобы можно было посоветовать более подходящий вариант - напиши о своей задаче подробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 16:03
|
|||
|---|---|---|---|
эффективный поиск листьев нижнего уровня |
|||
|
#18+
LordMADнапиши о своей задаче подробнее. задача в целом такова: имеем граф, состоящий из трёх подграфов, два из них - т-арные деревья с одним предком у каждого узла, и связаные с третьим подграфом через вершины на самом нижнем уровне ;-) Таким образом, деревьев два, и расти они могут как в ширину, так и в глубину. Третий подграф явл. ориентированным, но допускает в себе циклы, петли и параллельные дуги. Кроме того вершины могут иметь некоторые свойства вроде веса, итп. Соответственно такую структуру нужно поддерживать, и извлекать из неё пользу, т.е. применять на ней некоторые заранее неизвестные алгоритмы. Ну про обходы я уже молчу - это само собой. Кол-во вершин ~ 3-5K, но ничего неизвестно об их конфигурации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 16:36
|
|||
|---|---|---|---|
|
|||
эффективный поиск листьев нижнего уровня |
|||
|
#18+
man_555 LordMADнапиши о своей задаче подробнее. задача в целом такова: имеем граф, состоящий из трёх подграфов, два из них - т-арные деревья с одним предком у каждого узла, и связаные с третьим подграфом через вершины на самом нижнем уровне ;-) Таким образом, деревьев два, и расти они могут как в ширину, так и в глубину. Третий подграф явл. ориентированным, но допускает в себе циклы, петли и параллельные дуги. Кроме того вершины могут иметь некоторые свойства вроде веса, итп. Соответственно такую структуру нужно поддерживать, и извлекать из неё пользу, т.е. применять на ней некоторые заранее неизвестные алгоритмы. Ну про обходы я уже молчу - это само собой. Кол-во вершин ~ 3-5K, но ничего неизвестно об их конфигурации если CACHE - то все просто - я живу в Лиепае 9416382 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.07.2006, 02:33
|
|||
|---|---|---|---|
эффективный поиск листьев нижнего уровня |
|||
|
#18+
спасибо, MX -- ALEX, но проект некоммерческий :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1346707]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 398ms |

| 0 / 0 |
