Топологическая сортировка? без использования топсортаPython

Программы на Python
Ответить
Гость
 Топологическая сортировка? без использования топсорта

Сообщение Гость »


У меня есть список Python под названиемactivity.py

activities = [{'Cost': 10000, 'Duration': 5, 'Name': 'Activity 1', 'Predecessors': None}, {'Стоимость': 8000, 'Продолжительность': 3, 'Имя': 'Действие 2', 'Предшественники': ['Действие 1']}, {'Стоимость': 2000, 'Продолжительность': 15, 'Имя': 'Действие 3', 'Предшественники': ['Действие 2', 'Действие 1']}, {'Стоимость': 7000, 'Продолжительность': 16, 'Имя': 'Действие 4', 'Предшественники': ['Действие 2']}, {'Стоимость': 5000, 'Продолжительность': 20, 'Имя': 'Действие 5', 'Предшественники': ['Действие 4']}, ... Список представляет собой проект, состоящий из действий с заданной продолжительностью, а также ключ «Предшественники», который указывает, какие действия должны быть завершены, прежде чем это действие может начаться. Список доходит до действия 1001, но я включил только первые 5 строк.

Я уже рассчитал общее время для всех занятий, используя:

def get_total_project_duration(activities: list) -> int: total_time = sum(item['Duration'] для элемента в действиях) вернуть общее_время проходить Однако я хочу узнать минимальную возможную «Продолжительность», поскольку в списке есть ключ «Предшественники», который позволяет запускать несколько действий одновременно, чтобы занять как можно меньше времени. Я знаю, что это можно сделать с помощью топологической сортировки, но мне хотелось посмотреть, есть ли способ сделать то же самое, только используя библиотеки по умолчанию.

Я уже пробовал использовать график, но набор данных слишком велик, чтобы это сработало.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»