Mamy n przedmiotów o wagach ai i wartościach ci. Mamy plecak o pojemności M. Chcemy do niego zmieścić przedmioty o jak największej łącznej wartości.
Zazwyczaj widzi się rozwiązania tego problemu za pomocą programowania dynamicznego. Jednak takie rozwiązania nie mają szans, jeśli ai, ci oraz M są z zakresu [0, 108]. W przypadku dowolnie dużych wag i wartości przedmiotów problem okazuje się NP-trudny! Dlatego rozwiążemy go dla n ≤ 40.
Algorytm działający w czasie O(2n/2 * n) można wysnuć z opracowania zadania Szyfr z IX OI.
Dane są liczba pierwsza p, p < 109, oraz liczby 0 ≤ a,b < p. Chcemy znaleźć całkowity wykładnik m, taki że am = b (mod p).
Istnieje algorytm działający w czasie O(√ p log p), tzw. algorytm Baby-Step-Giant-Step, patrz s. 19–20 w czwartej części skryptu prof. Guzickiego z Algorytmicznej Teorii Liczb. Uwaga: w rozwiązaniu zadania jest potrzebne obliczanie odwrotności modulo liczba pierwsza, co można wykonać za pomocą rozszerzonego algorytmu Euklidesa lub Małego Twierdzenia Fermata.
Dany jest graf nieskierowany G o n ≤ 50 wierzchołkach. Chcemy wyznaczyć liczbę wszystkich klik w tym grafie. Przypomnijmy, że klika w grafie to zbiór wierzchołków, z których każde dwa są połączone krawędzią. Mamy też klikę pustą i wszystkie kliki jednowierzchokowe.
Algorytm o złożoności O(2n/2) można znaleźć w IKO z Delty 3/2013 autorstwa Tomasza Idziaszka.
Zadanie domowe: implementacja rozwiązania zadania Zliczanie klik na ASD-SIO.