Блог пользователя Perlik

Автор Perlik, 12 лет назад, По-русски

Всем привет. У меня появилось 2 вопроса, нагуглить которые эффективно я не смог, поэтому сюда напишу.
1. Может кто-нибудь дать ссылки на задачи на двумерное дерево отрезков?
2. Кто-нибудь может рассказать немного про квадродерево? Ну или хотя бы дать ссылки на толковые статьи, а то все, что я смог найти, так это описание в вики, да вот эта небольшая статейка. Суть я понял, но вот как именно строить все равно не очень понятно. Плюс нигде не могу найти внятной асимптотики. PavelKunyavskiy писал где-то, что работает за корень, на вики написано, что за log, а здесь вообще я не пойму, что значит "за O(N)".

  • Проголосовать: нравится
  • +36
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

На прошлой харьковской зимней школе были лекции про квадродерево. Можно попробовать там поискать в архиве

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Имеется ввиду 2012 года? 2011 и 2010 я просмотрел, вроде нет таких лекций. А 2012 года на сайте нет.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +13 Проголосовать: не нравится

      Понятия КД-дерево и Квадро-Дерево нужно различать.

      То, что работает за , называется КД-деревом.

      Возможно, имеется в виду моя лекция (Харьков-2012). Тогда текст можно найти здесь. Часть 4. Страница 5. Тема "КД-дерево". Видео лекции вроде гуглится...

      В википедии сказано, что в среднем случае КД-дерево работает за , а в худшем за O(N1 - 1 / k), где k — размерность пространства. Для k = 2 получаем ровно .

      P.S. Здесь везде КД-дерево = структура данных, построенная от N точек. Если у нас есть таблица m × m, то N = m2, соответственно = m.

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

Извиняюсь, не то.

»
12 лет назад, # |
Rev. 3   Проголосовать: нравится +12 Проголосовать: не нравится

Здесь есть задачи с харьковской зимней школы на двумерное дерево отрезков.

Здесь видео с прошлой харьковской зимней школы.

Его просто совсем недавно выложили.

»
12 лет назад, # |
Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится

O(N) в https://sites.google.com/site/indy256/algo/quad_tree означает временную сложность прямоугольного запроса count(x1, y1, x2, y2) на сетке NxN. Согласен, что написано непонятно.

Пример, на котором достигается N тут http://apps.topcoder.com/forums/?module=Message&messageID=1064330

Там рассматривается запрос в виде полоски шириной 1, который приводит к просмотру N клеток 1x1, например count(0, 0, N-1, 0).

Если я правильно понимаю, то хуже чем O(N) быть не может. А если мы заполним всю сетку NxN значениями, а запрос выполняется за O(N), то в этом случае вроде как получается, что запрос работает за корень.

»
12 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
»
12 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

За сколько оно работает зависит от конкретной задачи. За корень будет для множества точек на плоскости. (Правда видимо эта структура называется KD-дерево) По ссылке где непонятное "O(N)" насколько я понимаю речь идет про время работы за длину границы фигуры, на которой делается операция.