Мне нужно создать структуру данных, представляющую зависимости между пакетами.Распечатывает минимальный набор пакетов, необходимых для установки пакета
Я думал, что могу просто использовать график, но проблема в том, что некоторые пакеты могут зависеть от одного из «необязательных» пакетов, и нам нужно выбрать, какой из этих оптимальных пакетов удобнее устанавливать (в основном, из этих необязательных вариантов нам нужно установить лучшее).
Например, предположим, что у меня есть следующий situtation:
- упаковке1:
- package2: упаковке1
- упаковке3: упаковке1, package2
- package4: упаковке1 | упаковка3
- упаковка5: упаковка1, упаковка2 | упаковке3
Эта ситуация означает, что:
- пакет 1 не имеет зависимостей.
- упаковка 2 зависит от упаковки 1 (нам необходимо установить пакет 1).
- упаковка 3 зависит от упаковки 1 и 2 (мы должны установить оба)
- упаковка 4 зависит от пакета 1 или 3 (мы можем установить 1 или 3, но нам нужно выбрать лучший выбор, что означает выбор которые делают пакет 4 зависит от менее пакетов)
- пакет 5 зависит от упаковки 1, и это зависит также либо на упаковке 2 или 3 (опять же, нам нужно выбрать лучший выбор)
сейчас , проблема очевидна, когда мы можем выбирать между различными пакетами.
Как их выбрать?
Почему, например, упаковка 4 должна зависеть от упаковки 1 вместо 3?
Мы могли бы проверить, какие пакеты пакетов 1 и 3 зависят от них, но как насчет того, если у нас есть 10000 вариантов, но нам нужен только 1 лучший выбор? Для этого понадобились бы тысячи петель и вещи, слишком сложные. Может быть, что-то простое, но я не знаю, что.
Этот вид пытаясь выбрать, какой из них лучше установить, по-видимому, приводит к рекурсивному алгоритму, и это уже ударит меня.
Да, это хорошая идея, как мы это делаем? – nbro
Я добавил код на python, чтобы проиллюстрировать эту идею. Затем вы можете переопределить свой язык. Алгоритм можно улучшить, избегая перекомпрометировать зависимости пакета каждый раз, когда его узел посещается, но я решил сохранить код простым, чтобы он был более читаемым. – lgpasquale
Почему метод 'getOptimalDependencies' должен найти самый короткий путь? Почему я не вижу, почему ... – nbro