Re: Log files

From
Roman Vasin ()
To
All
Date
2000-03-03T21:51:37Z
Area
RU.ALGORITHMS
From: "Roman Vasin" <vasin@kaluga.ru>

> В таком случае твоя задача вообще не имеет решения: данные либо есть, либо
их
> нет. Непосредственно сам файл ты модифицировать не можешь (в принципе
можно
> было бы отсортировать сами актуальные данные): файл текстовый, и все
записи
> произвольной длинны - обмены внутри файла отпадают. Значит - только
внешняя
> сортировка, значит на временные данные нужна память. Природу не
обманешь...
Да, это точно, можно использовать только внешнюю сортировку.

>  RV> Можно ли построить алгоритм, который бы решал эту задачу не абсолютно
>  RV> точно, а как бы "статистически" точно?
> Нет.
Почему же нет, можно. Я уже описывал (в 1-м сообщении сабжа) такой алгоритм.
Он откидывает (удаляет) элементы с наименьшим счетчиком, по истечении
определенного времени. В конечном счете получаются "приближенные"
результаты. Вопрос в том, как построить алгоритм, который бы давал наиболее
лучшие приближения.

>  RV> т.е. результат являлся бы некоторым ПРИБЛИЖЕННЫМ значением ТОЧНОГО
>  RV> результата?
> Поразмысли логически сам: на основании чего можно вычислить интересующие
тебя
> сведения ? Ну кроме, конечно, гадания на кофейной гуще и расположения
звезд на
> небе ? :) Только на ОСНОВАНИИ АНАЛИЗА ДАННЫХ. Либо ты их анализируешь,
либо
> нет.
Помнишь математику, численные методы? Как выполняется приближенное
вычисление интеграла? Конечно же, анализ данных всегда есть его не может не
быть :)

Вот я и пишу, что наверное можно как нибудь выполнять приближенный поиск. Я
более занимаюсь AI (нейронными сетями и экс системами), там это называется
эвристический поиск.

Идея, как мне кажется, в этой задаче может быть такая: при анализе данных
(ip) по истечении некоторого интервала времени необходимо будет принять
решение - оставить текущий ip в списке или нет.
например, в результате нескольких циклов для ip 195.30.30.30:
Цикл, 1,    2,    3,    4,    5,    6,.....
Count: 2,    3,    2 ,    2,    3,   3,

Если представить это графически, то получится почти горизонтальная прямая
(среднее значение счетчика= 2.5). А подсчет общего количества встречаемости
данного ip - это вычисление площади т.е. нахождение интеграла. Ну как такой
подход?

Затем можно сделать экстраполяцию
В данном случае, на протяжении 6 циклов, счетчик данного ip почти не
изменялся, тогда экстраполируюя кривую можно оценить потенциальную
"значимость" такого ip. можно предположить, что после n циклов суммарное
значение счетчика будет равно n*2.5. и если оно в этом случае значительно
меньше, чем текущее значение счетчиков ip из вершины списка, то можно с
уверенностью удалить этот ip из списка "кандидатов" т.е. он никогда не
попадет в 10 самых популярных ip.

Разумеется результаты в этом случае будут приближенными, но для очень
больших сайтов это оправдано, для них важно знать тенденцию, к чему
"катиться" их сайт.

На закуску ведь в mp3 и др. методах архивации осущетсвляется некоторе
приближение...


> Решение я тебе уже предложил:
> * B-Tree, страницы кила по четыре.
> * Каждая запись - 4 бата на IP (DWORD) и 4 байта на счетчик использований
(еще
> DWORD), итого - 8. примерно 3 DWORD-а на служебную информацию страницы,
итого -
> 508 записей на страницу. Миллион записей - жалкие 8 мег при условии что
все они
> уникальны. Реализаций Б-Деревьев в ИНете - как собак.
Опиши, пожалуйста, алгоритм формирования B-Tree, хотябы на словестном
уровне, один абзац. или кинь хороший урл.


--
Роман Васин,                          Калуга,    vasin@kaluga.ru
Home:      http://www.geocities.com/CapeCanaveral/2971/




--- ifmail v.2.15dev4
 * Origin: Demos online service (2:5020/400)