Я работаю над теоретической теоретической проблемой теории, которая включает в себя объединение комбинаций гиперэдров в гиперграфе для анализа различных случаев.с использованием cython или PyPy для оптимизации кортежей/списков (алгоритм теории графов, реализованный в python)
Я реализовал первоначальную версию основного алгоритма в Python, но из-за его комбинаторной структуры (и, вероятно, моей реализации) алгоритм довольно медленный.
Один из способов, с помощью которого я рассматриваю возможность его ускорения - использовать PyPy или Cython.
Глядя на документацию, похоже, Cython не предлагает отличного ускорения, когда дело доходит до кортежей. Это может быть проблематично для реализации, поскольку я представляю гиперссылки как кортежи - поэтому большинство алгоритмов манипулирует кортежами (однако они имеют одинаковую длину, вокруг len 6 каждый).
Поскольку мои умения на C и Python довольно минимальны, я был бы признателен, если бы кто-нибудь мог посоветовать, что было бы лучшим способом для оптимизации кода, учитывая его зависимость от кортежей/списков. Есть ли документация с использованием списков/кортежей с Cython (или PyPy)?
Можете ли вы разместить свой код и выделить части, которые медленны? Трудно предложить улучшения, не видя кода, так как проблема может быть не такой, как вы думаете. В _general_ лучшим ответом на улучшение скорости является мысль о лучшем алгоритме ... –
Cython может работать с C-массивами и структурами и позволяет вам определять типы расширений. Любой из них может быть альтернативой кортежам. –
@Roland, алгоритм - это фактически NP (он связан с сопоставлением в гиперграфах), поэтому я не могу рассчитывать на более оптимальный алгоритм, чем тот, который я уже реализовал. Однако меня интересует только конкретный случай. Я оцениваю время выполнения своей наивной реализации в Python, если я могу заставить его работать в 100 раз быстрее, чем это закончится за приемлемое время (около 2 недель). – nsimplex