
Сергей
12.05.2016
21:45:03
могу, но это не оверхед будет? мне кажется мне нужен тупл туплов или типа того

Andrey
12.05.2016
21:45:46
Хотz думаю, что либа на питоне есть для этого.

Aldar
12.05.2016
21:46:20
блин, что ты хочешь делать с этими объектами?

Google

Сергей
12.05.2016
21:46:29
операции вроде поиска соседей я могу считать самостоятельно, и тянуть по результирующим ключам

Andrey
12.05.2016
21:46:46

Сергей
12.05.2016
21:46:55
хорошо, спасибо

Aldar
12.05.2016
21:47:01
лол
зачем ему btree

Andrey
12.05.2016
21:47:30

Aldar
12.05.2016
21:48:19
btree во первых тяжело реализовывать, во вторых оно хорошо работает с жеским диском

Andrey
12.05.2016
21:48:40

Aldar
12.05.2016
21:48:42
и по какому ключу ты собрался строить дерево?
и зачем?

Сергей
12.05.2016
21:48:59
ну вот пример операции - есть несколько экземпляров с разными координатами и один, к которому нужно найти ближайший. Считаю, достаю. Всё.

Andrey
12.05.2016
21:49:15

Google

Andrey
12.05.2016
21:50:31

Aldar
12.05.2016
21:50:43
то есть ключ это тупл?

Andrey
12.05.2016
21:50:48

Aldar
12.05.2016
21:50:59
и что оно будет искать там?

Andrey
12.05.2016
21:51:18

Aldar
12.05.2016
21:51:24
что угодно, но не ближайшего соседа

Andrey
12.05.2016
21:51:54

Aldar
12.05.2016
21:52:34
quadtree

Сергей
12.05.2016
21:52:37
objects[15][154] - O(1) же достанет?

Aldar
12.05.2016
21:52:51
за логарифм ищет

Сергей
12.05.2016
21:52:52
только если ключи целые

Aldar
12.05.2016
21:53:16
btree тут вообще ни к селу ни к городу
аа гады кто забанил в С конфе

Andrey
12.05.2016
21:56:28
И правильно сделали.

Aldar
12.05.2016
21:56:39
я ж пошутить хотел

Andrey
12.05.2016
21:56:57

Andrei
12.05.2016
21:59:41

Aldar
12.05.2016
22:00:33
это уже обобщение

Andrey
12.05.2016
22:00:38
Ну вот, насоветовали. Выбирай то, что нравтся.

Aldar
12.05.2016
22:00:44
основная идея - рекурсивное разбиение пространства

Google

Andrey
12.05.2016
22:01:14
Т.е. он будет. Не много ли это на мильён точек?

Aldar
12.05.2016
22:01:51
у любого дерева оверхед по памяти
тем более что можно задать определённую глубину

Andrey
12.05.2016
22:02:34

Andrei
12.05.2016
22:02:39
зависит от того чего хотят добиться.
r*-tree оченьхорошо подходит
из всех спэтиал три его чаще всего используют для геоданных.
и неслучайно.
для статических данных идеальный вариант

Andrey
12.05.2016
22:03:36
https://pypi.python.org/pypi/Rtree/

Andrei
12.05.2016
22:03:37
очень хорошо балансируется

Aldar
12.05.2016
22:03:45
для многомерных данных да

Andrey
12.05.2016
22:03:50
Нe вот, если лень разбираться, а хочется использовать.

Aldar
12.05.2016
22:03:55
для двумерных вполне норм quadtree

Andrei
12.05.2016
22:04:28
Нет, как раз таки для двухмерных.
И для максимального перфоманса именно r*
оно дороже строится, но работает на запросы быстрее.

Andrey
12.05.2016
22:05:41
для двумерных вполне норм quadtree
Вот смотри, у нас есть квадрат 1x1. Если добавить в quadtree точку 0.54 0.54, то какую структуру дерево будет иметь? А то я не сумел понять структуру quadtree.

Aldar
12.05.2016
22:05:55
quadtree примитивное вообще

Google

Andrey
12.05.2016
22:05:57
Я правильно понимаю, что там вся информация хранится в листах дерева?

Aldar
12.05.2016
22:06:03
берет квадрат и делит на 4 квадрата

Andrei
12.05.2016
22:06:09
квадтри просто четверит пространство.

Aldar
12.05.2016
22:06:14
и так рекурсивно

Andrei
12.05.2016
22:06:28
если в вершине слишком много точек она бьется на 4

Aldar
12.05.2016
22:06:28
можно задать глубину рекурсии, и тем самым точность поиска

Andrey
12.05.2016
22:07:17

Andrei
12.05.2016
22:07:35
нопе

Admin
ERROR: S client not available

Andrei
12.05.2016
22:07:47
На самом деле обычный деревянный
в худшем случае nlogn
Как раз таки перформанс похуже.

Aldar
12.05.2016
22:11:23
проще взять готовую имплементацию какой либо структуры данных и заюзать
самому довольно сложно писать
деревья

Andrey
12.05.2016
22:12:09

Aldar
12.05.2016
22:12:51
потому что btree читает блоками, обычно этот блок подгоняют по размер блока жесткого диска в базах данных
а в памяти юзают что нибудь попроще, типа red-black tree

Andrey
12.05.2016
22:13:19

Andrei
12.05.2016
22:14:14
btree вообще для базданных юзают

Google

Aldar
12.05.2016
22:14:20
не, твой косяк в том, что бинарное дерево с ключём из тупла (x,y) никак не помогает искать ближайшего соседа
по первых нужно определить операцию < для тупла

Andrei
12.05.2016
22:14:42
помогает на самом деле, но по хитрому.

Andrey
12.05.2016
22:14:48

Aldar
12.05.2016
22:15:13
ключ должен иметь операцию <

Andrei
12.05.2016
22:15:17
kd-tree

Aldar
12.05.2016
22:15:25
как определить операцию < для тупла (x,y)?

Andrei
12.05.2016
22:15:29
пространство делится бинарно, по очереди по каждому измерению.
Эм, как угодно.
сначала иксы, потом игреки
Другое дело, что он не отражает сути расстояния.

Andrey
12.05.2016
22:16:15

Aldar
12.05.2016
22:16:18
в том то и дело
что ближайшего соседа так не найдешь

parikLS
12.05.2016
22:34:33
если ключ - обе координаты, тогда храни в редисе)

❄☁cybernetic life support system
13.05.2016
04:30:55
Ок
Подумаем
А на макоси есть пиратство?

Alexander
13.05.2016
04:32:14
да)

Gleb
13.05.2016
04:40:20