Mam takie zadanie:
Ustawianie książek w stos:
Dany jest zbiór książek.
Każda książka ma trzy wymiary (wysokość, szerokość i grubość).
Zadanie polega na ustawieniu jak najwyższego stosu z książek przy czym
książka x może leżeć na książce y wtedy i tylko wtedy
gdy x ma mniejszą szerokość i wysokość niż y.
Wysokość stosu to suma grubości wszystkich książek w stosie.
Jak na razie znalazłem rozwiązanie tego problemu, ale nie jest ono optymalne.
Moje rozwiązanie polega na sprowadzeniu tego problemu do problemu grafowego: wierzchołki to książki, jeśli na daną książkę można położyć inną książkę to prowadzimy do niej krawędź skierowaną o wadze równej -grubość_kładzionej_książki. W tak utworzonym grafie szukamy najkrótszej ścieżki (wszystkie wagi w grafie są przeciwnościami grubości, więc de facto szukamy najdłuższej ścieżki czyli najwyższego stosu). Rozwiązanie to przeciwność długości otrzymanej ścieżki.
Rozwiązanie to nie jest optymalne (tzn. kwadratowe) bo trzeba znaleźć najkrótszą ścieżkę w całym grafie a nie tylko dla konkretnych dwóch wierzchołków.
Nie mam pojęcia jak to inaczej rozwiązać, żeby było optymalnie (po głowie chodzi mi jakaś rekurencja z powrotami, ale nie są to sprecyzowane myśli :p). Nie proszę o rozwiązanie tylko jakąś wskazówkę, która naprowadziłaby mnie na dobry trop :)