Есть ли какая-нибудь из этих четырехъядерных библиотек?

Похоже, что какой-то мой проект потребует использования четырехъярусных деревьев, с которыми я никогда не работал. Из того, что я прочитал, они должны позволить существенные улучшения производительности, чем попытка грубой силы в проблеме. Являются ли какие-либо из этих модулей python хорошими?

  • Quadtree 0.1.2 <= Нет: невозможно выполнить в Python 3.1
  • QuadTree <= Да: простой при работе с прямоугольниками
  • quadtree.py <= Нет: нет поддержки необходимых операций

РЕДАКТИРОВАТЬ 1: Кто-нибудь знает о лучшей реализации, чем тот, который представлен в вики-файле pygame?

EDIT 2: Вот несколько ресурсов, которые другие могут найти полезными для методов поиска путей в Python.

  • Навигация по игровой площадке
  • Поймать Cootie

4 Solutions collect form web for “Есть ли какая-нибудь из этих четырехъядерных библиотек?”

В этом комментарии joferkington ссылается на текущий вопрос и говорит:

Для того, что бы это ни стоило, scipy.spatial.KDTree (и / или scipy.spatial.cKDTree, который написан на C по соображениям производительности) является гораздо более надежным выбором, чем перечисленные опции.

Другая библиотека для проверки – PyQuadTree , чистый индекс квадранта python, который также работает на Python 3x. Все, что вам нужно добавить, это его ограничивающая рамка в виде последовательности длиной 4 длины, поэтому ее можно использовать для различных целей и даже для отрицательных систем координат.

Хотя я и автор, я действительно просто взял чью-либо структуру / код quadtree и сделал ее более удобной для пользователя, добавила поддержку прямоугольников и добавила документацию. Простой пример использования:

#SETUP import pyqtree spindex = pyqtree.Index(bbox=[0,0,1000,500]) #ADD SOME ITEMS for item in items: spindex.insert(item=item, bbox=item.bbox) #RETRIEVE ITEMS FROM A REGION result = spindex.intersect(bbox=[233,121,356,242]) 

Индекс пакета python создает две другие библиотеки при поиске quadtree: http://pypi.python.org/pypi?%3Aaction=search&term=quadtree&submit=search

отказ от ответственности: никогда не использовались квадранты или любая из этих библиотек.

Иногда неясно, как реализовать структуры данных, такие как деревья в Python.

Например,

  D / \ BF / \ / \ ACEG 

это простая двоичная древовидная структура. В Python вы будете представлять его так:

[D,B,F] – это узел с левым и правым поддеревом. Чтобы представить полное дерево, вы должны:

 [D,[[B,A,C],[F,E,G]]] 

Это простой список вложенных списков, где любой узел может быть значением типа D или C, а любой узел может быть поддеревом, которое является рекурсивно, списком вложенных списков. Вы можете сделать что-то подобное со словарем словарей. Эти типы реализаций являются немного быстрыми и грязными и могут быть неприемлемыми в задании, где преподаватель ожидает класс Node с указателями на другие узлы, но в реальном мире обычно лучше использовать оптимизированные реализации списков / словарей Python первый. Только если результат каким-то образом неадекватен, перепишите его так, чтобы он был написан на C или Java.

Помимо этого, конечно, вам нужно реализовать различные алгоритмы для управления вашими деревьями, потому что quadtree – это больше, чем просто некоторые данные; это набор правил о том, как вставлять и удалять узлы. Если это не вопрос о курсовой работе, то Quadtree 0.1.2 , вероятно, будет хорошей идеей.

Interesting Posts

Python PLY ноль или больше вхождений элемента синтаксического анализа

Импорт keras.datasets не работает

почему я получаю ошибку IOError: (9, «Bad file descriptor») при создании заявлений на печать?

Каков правильный способ переопределить операции копирования / глубокой копии объекта в Python?

Как построить эмпирический cdf в matplotlib в Python?

поиск лучших k самых больших ключей в словаре python

PIP install не может найти ffi.h, даже если он распознает libffi

как сериализовать произвольные типы файлов для json string в python

pip при установке Python: «Игнорирование ошибки failpip: для протокола 8.1.1 требуется SSL / TLS»

Проверьте, действителен ли путь в Python

whoami в python

Python – Дескриптор 'split' требует объекта 'str', но получил 'unicode'

Общий способ получения первичного ключа из декларативно определенного экземпляра в SQLAlchemy

Почему я вижу «TypeError: строковые индексы должны быть целыми»?

Как преобразовать (или масштабировать) значения оси и переопределить частоту тика в matplotlib?

Python - лучший язык программирования в мире.