Mogę wybrać z listy "czynności", aby wykonać jedną raz na sekundę. Każde działanie na liście ma wartość liczbową określającą, ile jest warta, a także wartość reprezentującą jego "czas regeneracji" - liczbę sekund, które muszę poczekać, zanim ponownie wykorzystam tę akcję. Lista może wyglądać tak:Algorytm optymalizacji kolejności działań z czasami odnowienia
- działanie A ma wartość 1, i odnawianie 2 sekund
- Działanie B ma wartość 1,5 i czas chłodzenia od 3 sekund
- Działanie C ma wartość 2 i ponownego użycia 5 sekund
- Działanie D ma wartość 3, a czas chłodzenia 10 sekund
Tak więc w tej sytuacji, ABA kolejność będzie miał całkowitą wartość (1 + 1,5 + 1) = 3,5, i byłoby to do zaakceptowania, ponieważ pierwszy u se A następuje po 1 sekundzie, a ostateczne użycie A następuje po 3 sekundach, a następnie różnica między tymi dwoma jest większa lub równa odnowie A, 2 sekundy. Rozkaz AAB nie zadziałałby, ponieważ robiłbyś A tylko sekundę od siebie, mniej niż czas odnowienia.
Mój problem polega na próbie optymalizacji kolejności użycia działań, maksymalizując całkowitą wartość w stosunku do określonej liczby czynności. Oczywiście optymalną kolejnością, jeśli używasz tylko jednej akcji, byłoby wykonanie działania D, co daje łączną wartość 3. Maksymalna wartość z dwóch akcji pochodzi z CD lub DC, co daje łączną wartość równą 5. komplikuje się, gdy wykonasz 10 lub 20 lub 100 wszystkich działań. Nie mogę znaleźć sposobu na zoptymalizowanie kolejności działań bez brutalnego wymuszania jej, co daje jej złożoność wykładniczą na całkowitej liczbie działań, które chcesz zoptymalizować. To staje się niemożliwe za około 15 razem.
Czy istnieje sposób na znalezienie optymalnego czasu przy mniejszej złożoności? Czy ten problem został kiedykolwiek zbadany? Wyobrażam sobie, że może istnieć jakiś algorytm typu ważonego wykresu, który pracuje nad tym, ale nie mam pojęcia, jak to zadziała, nie mówiąc już, jak go zaimplementować.
Przepraszam, jeśli to jest mylące - jest to dość dziwaczne koncepcyjnie i nie mogłem znaleźć lepszego sposobu na jego oprawienie.
Ile różnych rodzajów działań może być najwyżej? – aram90
Praktycznie nie byłoby więcej niż 12. – user2196830