Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

компактное хранение иерархических данных

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
ret
Гость





СообщениеДобавлено: Пт Авг 22 2003 18:35    Заголовок сообщения: компактное хранение иерархических данных Ответить с цитатой

Может кто подскажет как можно хранить (компактно) в оперативной памяти большие объемы строковых данных организованных иерархически (т.е. в фразах можно выделить лексемы и символ разделителя, и лексемы в разных фразах могут повторяться)?
Ограничения следующие:
1) Словарь лексем (алфавит) неограничен ни по колличеству уникальных лексем ни по максимальной длине лексемы. Так же неограничено количество фраз.
2) Исходная фраза должна быть в объекте представлена некоторым компактным кодом (или ссылкой) на путь, по которому из лексем можно восстановить исходню фразу
2) Код фразы, который хранится в объекте, формируется один раз и неможет быть изменен впоследствии.
3) Фразы поступают последовательно и кодирование должно быть последовательным. Т.е. на вход некоторого кодера поступает фраза, она разбивается на лексемы и создается объект в котором фраза будет выражена некоторым компактным кодом, и этот код уже нельзя будет изменять. При этом, что из себя представляют последующие фразы неизвестно, как и неизвестно то сколько их вообще может быть. Т.е. получить информацию сразу о всех фразах нельзя.

Строить алгоритм в лоб на основе списка не проходит так как отсутствие каких либо ограничений приводит разрастанию указателей.

Ограничение можно принять одно - если в качестве алфавита взять не лексему (которая когда то там прдет и будет уникальной и соответственно должна будет быть добавлена в алфавит), а обычные символы ascii и на основе каких-то априорных данных построить дерево кодирования фраз. Но это не подходит. Скорее подход должен напоминать хранение интернетовских URL

Киньте какие нибудь ссылки или какие нибудь идеи.
Вернуться к началу
Sclis
Гость





СообщениеДобавлено: Вт Авг 26 2003 08:51    Заголовок сообщения: Re: компактное хранение иерархических данных Ответить с цитатой

и что?Smile пространные рассуждения о бесконечности вселенной Smile Ничего не ограничено... как бы даже кластер суперкомпьютеров с навороченным распределенным сервером баз данных имеет свои ограничения Smile
когда ты говоришь "количество лексем не ограничено" это ты имеешь в виду, что "может быть аж 12 штук" или "... аж сто тысяч милиёнов"? Smile
за каким-то количественным пределом действительно придется переходить к базе данных. ну база своими способами может полностью хранится в оперативке, не стоит пытаться все с нуля тут писать.
Кэшируй поступающую информацию, а потом обрабатывай ее не спеша.
Так что, если все действительно сильно большое, то наверно ты придешь к базам данных.
есть любопытная книга "Паттерны проектирования" Эрих Гамма и др. там в схожей (как мне кажется) ситуации предлагают использовать паттерн "приспособленец".
Вернуться к началу
kolobok0
Гость





СообщениеДобавлено: Чт Авг 28 2003 14:56    Заголовок сообщения: Re: компактное хранение иерархических данных Ответить с цитатой

Не знаю на сколько буду оригинален, но когда то решал похожую задачу. Из базы данных (это номенклатор товара был) в 2 мега - ужал в свой быстрый для доступа формат - где то до 60 килл. Идея состояла в том, что пришедшие на вход фразы есть не сгинерённые бесконечные комбинации, а просто введённые одним лицом (либо группой лиц) данные. всё... Вроде это утверждение имеет жизнь Smile)) Как хранить - ну тут дело вкуса и цвета.. Как разбивать тут есть нюансы Smile))

удачи.
(круглый)
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...