Еще раз про форумы.

Maxik

Новичок
Еще раз про форумы.

А если каждое сообющение форума это точка в двоичной системе координат.
Когда новое вставляешь, то просто те которые снизу или сбоку пересчитываешь и отодвигаешь.
Тут что то типа этого предлагали, с пременением множеств. Но там тоже надо раздвигать, а расчитывать сложнее.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
эээ... я дико извиняюсь...

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

Отсюда мораль: если уж предлагать _новый_ алгоритм, то статья должна быть если и не на уровне Joe Celko, то уж по крайней мере подлиннее и пограмотнее, чем то, что мы имеем щастье здесь видеть...

Да, и что такое, чёрт побери, "двоичная система координат"?
 

Maxik

Новичок
Погоди, погоди, какая точка?

Алгоритма пока нет.
Но выглядит примерно так.вы видите конференцию на экране.
Каждое сообщение имеет два поля, f_X и f_Y.
А дальше все просто.
Первое сообщение ветки имеет координату f_X=1, f_y=200. Это двухсотое сообщение.Вернее начало двухсотой ветки.
Ответ на это будет иметь f_X=2, f_Y=201. И так далее. Если надо вставить сообщение, то просто прибавляешь единицу ко всем f_Y большим куда вставляешь.

Есть еще вариант. Каждое сообщение имеет еще и полу f_Z. И сообщения всей ветки идйщей из корня имеют одинаковый номер. Получается что то типа координаты Z. Точно не знаю насколько это облегчит задачу, но может пригодиться.

Короче в результате мы имеем, каждое сообщение имеет уникальное поле f_Y. Исходя из того что сообщения добавляются в хронологическом порядке, то сортируя запрос по этому полю, мы просто получаем целую ветку конференции.

Тут к сожалению сложнее ходить по веткам, но в конференциях это особо и не надо. В них главное добавление сообщения и просмотр.

Вот в общем то и все.
Я сейчас пытаюсь это реализовать. Елси не получится то сообщю. Но по моему это настолько просто что должно работать.
 

Maxik

Новичок
ну ошибся, я

я имел ввиду обычную декартову систему.
просто две оси X и Y.
разъяснения см выше. ^
 
Сверху