Модуль Python, реализующий алгоритм очереди кучи. Используйте только тогда, когда вопрос относится к этой реализации кучи, а не к механике кучи в целом.
1 ответ

Heapq с равным приоритетом

Я пытаюсь создать модное событие. Таким образом, я должен определить класс Event который наследуется моими разными событиями. class Event: def __init__(self, last_instant): self.last_instant = last_instant # That's the prio criteria class Event1(Eve…
06 авг '18 в 11:25
1 ответ

Heapq в Python3 не работает с кортежами, поскольку он не соответствует порядку ожидания

Все говорят, если вы толкаете кортеж в heapq, он будет принимать первый аргумент в качестве фактора сравнения. Но это не так! Мне интересно, что не так в моем коде? for task_name, counter in tasks_counter.items(): heappush(tasks_q, (-int(counter), t…
05 янв '19 в 21:27
0 ответов

heapq: Какой элегантный способ использовать настроенный ключ приоритета со связанными данными, которые не сопоставимы?

Как показано в базовом примере в документе, всегда можно использовать кортеж, чтобы первый элемент сравнивался как ключ приоритета. Однако что, если связанные данные не сопоставимы? Что было бы элегантным способом решить эту проблему? Например, impo…
14 сен '18 в 09:34
2 ответа

Библиотека Python, что означает "q" в heapq?

В Python есть библиотека heapq, которую мы можем использовать для выполнения операций с кучей. Что означает "д"?
08 фев '19 в 02:22
1 ответ

Python, heapq, как эффективно изменить минимальный элемент в heapq?

Я использую Heapq в Python 3.7 У меня есть два вопроса о heapq: Я не знаю, как эффективно сохранить инвариант кучи, если я просто хочу изменить элемент min. И вот моя реализация. (Это довольно медленно) q= [5,8,9,10] heapq.heapify(q) q[0] = 1200 hea…
08 дек '18 в 10:30
1 ответ

heapq custom сравнить с

Я пытаюсь определить обычный метод, чтобы сделать упорядоченную вставку в приоритетную очередь в Python, но не получаю ожидаемых результатов. После определения метода вставки в очередь, как показано ниже: def insert(self, node): if isinstance(node, …
26 окт '18 в 18:01
0 ответов

Ошибка типа: "<" не поддерживается между экземплярами "функция" и "функция" от P2 до P3

Я перевожу проверенные рабочие коды в Python 2.7, в Python 3.6.3, но сталкиваюсь с ниже TypeError:- Traceback (most recent call last): File "epto.py", line 1020, in &lt;module&gt; init() File "epto.py", line 85, in init CYCLE(node) File "epto.py", l…
25 фев '19 в 02:33
2 ответа

Итератор heapq.merge() просматривает больше элементов, чем в списках

Следуя документации heapq.merge() - я получаю очень странные результаты, и не могу найти, что я делаю неправильно... Настройка выглядит следующим образом: Я использую heapq.merge () для сортировки нескольких списков. Протестировано с 2 ~ 8 итератора…
20 дек '18 в 07:04
0 ответов

Почему элементы в моем heapq не упорядочены по python?

Я использую простой heapq в python с пользовательскими элементами, на которых я реализовал функцию lt. class Edge: def __init__(self, cost, u, v): self.u = u self.v = v self.cost = cost def weight(self): w = self.cost v = self.v while v.parent is no…
2 ответа

Какова временная сложность heapq.merge в python?

Я читал, что функция heapq.merge специально используется для объединения 2 отсортированных массивов? такое сложность времени O(n)? если нет то что это и почему? И в чем его сложность. Я решал вопрос слияния 2 отсортированных массивов с 2 указателями…
18 фев '19 в 04:18
2 ответа

Как найти положение элемента в Heapq

Я пытаюсь реализовать HeapQ с использованием Python, но я застрял в этом сценарии, где мне нужно получить положение ключа в очереди?, Я ударил стену, пытаясь решить эту проблему. Любые советы будут оценены.
23 авг '18 в 13:50
1 ответ

Python heapify() время сложность

def heapify(A): for root in xrange(len(A)//2-1, -1, -1): rootVal = A[root] child = 2*root+1 while child &lt; len(A): if child+1 &lt; len(A) and A[child] &gt; A[child+1]: child += 1 if rootVal &lt;= A[child]: break A[child], A[(child-1)//2] = A[(chil…
07 авг '18 в 21:29
2 ответа

heapq push TypeError: '<' не поддерживается между экземплярами

Я работаю в Python и у меня есть проблемы с heapq. Когда я помещаю элемент в кучу, я получаю эту ошибку: Ошибка типа: "<" не поддерживается между экземплярами "Точка" и "Точка" Точка мой внутренний класс. Я помещаю кортеж, сформированный (float, Poi…
30 ноя '18 в 08:54
2 ответа

Как эффективно вытолкнуть все элементы с наименьшим ключом в heapq?

Я работаю над экспериментом по моделированию и пытаюсь сделать свой код максимально эффективным. В одной части у меня есть очередь с минимальной кучей приоритетов, которую я реализовал, используя heapq модуль. Во время симуляции я должен высовывать …
17 янв '19 в 03:23
2 ответа

Как объединить k отсортированных массивов, решение не работает, позволяя дубликаты.!

Учитывая k отсортированных массивов размером n каждый, объедините их и напечатайте отсортированный вывод. Алгоритм я следовал итерация по каждому массивувыбрать i-й индекс в k массивах insert() в минхепе delMin() и добавить массив результатов. from …
23 ноя '18 в 02:03
1 ответ

Почему куча медленнее, чем сортировка для K ближайших точек к началу координат?

Задача кодирования здесь Решение кучи: import heapq class Solution: def kClosest(self, points: List[List[int]], K: int) -&gt; List[List[int]]: return heapq.nsmallest(K, points, key = lambda P: P[0]**2 + P[1]**2) Сортировка решения: class Solution(ob…
0 ответов

Что значит для N быть маленьким по сравнению с общим размером коллекции?

Я новичок в python-3x, и мне трудно понять, что значит для N быть меньше по сравнению с общим размером коллекции: "Если вы ищете N самых маленьких или самых больших предметов, а N мало По сравнению с общим размером коллекции эти функции обеспечивают…
17 май '19 в 01:19
1 ответ

Странные помехи между модулем Heapq и словарем

С одной стороны, у меня есть grid defaultdict, который хранит соседние узлы каждого узла в сетке и его вес (все 1 в примере ниже). node (w nbr_node) grid = { 0: [(1, -5), (1, -4), (1, -3), (1, -1), (1, 1), (1, 3), (1, 4), (1, 5)], 1: [(1, -4), (1, -…
26 мар '19 в 16:41
1 ответ

Почему _siftup и _siftdown в Python противоположны?

Из определения двоичной кучи в Википедии, sift-up также называется up-heap операция и sift-down называется down-heap, Итак, в куче (полное двоичное дерево), up означает от листа до корня, и down означает от корня до листа. Но в питоне это выглядит к…
27 мар '19 в 10:45
1 ответ

Ошибка типа между двумя экземплярами вершин (узлов) в алгоритме SPF Дейкстры

В настоящее время я работаю над решением проблемы оптимизации расписания движения поездов в рамках обучения. В этой задаче должна быть максимизирована функция полезности, которая увеличивает количество посещаемых (критических) станций и уменьшает ко…
15 апр '19 в 15:18