Strategie ataku

🎯 Po co Ci to?

Wiesz już, że problemy się kroi (1.4) i że przepisy mają cenę (1.5). Ale skąd wiadomo, od czego zacząć? Zawodowcy nie zaczynają od kodu ani nawet od schematu — zaczynają od wyboru strategii: budować od fundamentów czy od wizji całości? co pominąć, a co jest istotą problemu? a może dokładne rozwiązanie w ogóle nie jest osiągalne i trzeba się zadowolić „wystarczająco dobrym"? Te decyzje mają swoje nazwy i swoją rzemieślniczą tradycję. W zakresie rozszerzonym — czyli między innymi na maturze — wymaga się ich świadomego używania.

✅ Czego się nauczysz

Po tej jednostce potrafisz:

  • rozróżnić metodę zstępującą i wstępującą oraz dobrać właściwą do problemu;
  • wyjaśnić rolę abstrakcji i redukcji w projektowaniu rozwiązań;
  • wskazać, kiedy sięga się po heurystykę — i jaką cenę się za nią płaci.

📘 Wyjaśnienie

Zstępująco czy wstępująco? To dwa przeciwne kierunki marszu po drzewie dekompozycji z jednostki 1.4.

Metoda zstępująca (z góry w dół) zaczyna od całości: „system obsługi biblioteki szkolnej składa się z katalogu, wypożyczeń i czytelników". Każdy element traktujesz na razie jak czarną skrzynkę — wiesz, co robi, nie wiesz jeszcze jak — i schodzisz poziom niżej dopiero, gdy szkielet całości stoi. Tak projektuje architekt: najpierw bryła budynku, potem piętra, na końcu klamki.

Metoda wstępująca (z dołu do góry) zaczyna od klocków, które już masz lub łatwo zrobisz: „umiem wczytać listę książek z pliku; umiem sprawdzić, czy książka jest wypożyczona; umiem…". Z małych, przetestowanych kawałków składasz coraz większe. Tak buduje się z klocków: nie wiadomo jeszcze, czy powstanie zamek czy statek, ale każdy klocek trzyma się mocno.

💭 Pomyśl: Piszesz z zespołem grę: postać skacze po platformach, zbiera monety, są trzy poziomy trudności. Które fragmenty pracy naturalnie pójdą zstępująco, a które wstępująco?

Sprawdź odpowiedź

Zstępująco: ogólny projekt — z czego składa się gra (świat, postać, punktacja, menu), jak te części się komunikują. Wstępująco: konkretne umiejętności — „narysuj postać w punkcie $(x, y)$", „sprawdź, czy postać dotyka platformy" — które testuje się osobno, zanim złoży się z nich całość. W praktyce zawodowej niemal zawsze pracuje się obiema naraz: szkielet z góry, klocki z dołu, spotkanie w połowie.

Abstrakcja: sztuka pomijania. Spójrz na schemat metra. Nie zgadza się w nim prawie nic: odległości przekłamane, linie wyprostowane, zakręty zniknęły. I właśnie dlatego jest genialny — pokazuje wyłącznie to, co ważne dla pasażera: kolejność stacji i przesiadki. Mapa wierna terenowi byłaby bezużyteczna.

📐 DEFINICJA — abstrakcja: świadome pominięcie szczegółów nieistotnych dla rozwiązywanego problemu i zatrzymanie tylko cech istotnych.

Po ludzku: schemat metra zamiast zdjęcia satelitarnego. Czym NIE jest: kłamstwem ani uproszczeniem „bo się nie chciało". Abstrakcja jest dobra lub zła względem celu: schemat metra jest świetną abstrakcją dla pasażera i fatalną dla ekipy kopiącej tunel.

Cała informatyka jest wieżą abstrakcji: zmienna (dział 3) to abstrakcja komórki pamięci, lista to abstrakcja wielu komórek, graf (dział 9) to abstrakcja dowolnej sieci połączeń — miast, ludzi, stron internetowych. Modelując problem (etap 2 myślenia komputacyjnego!), wykonujesz właśnie akt abstrakcji: z całej złożoności świata zostawiasz to, co algorytm musi widzieć.

Redukcja: podepnij się pod znane. Drugi zawodowy odruch: zanim zaczniesz wymyślać, sprawdź, czy Twój problem nie jest starym problemem w przebraniu. „Znajdź parę uczniów o tej samej dacie urodzin" — to po posortowaniu listy dat problem „czy sąsiednie elementy są równe", trywialny. „Ułóż plan przesiadek" — to szukanie drogi w grafie, rozwiązane pół wieku temu. Sprowadzenie nowego problemu do znanego nazywamy redukcją; duża część zawodowej biegłości to bogaty katalog problemów-wzorców, do których umie się redukować. Ta książka taki katalog systematycznie buduje.

Heurystyka: wystarczająco dobrze. Czasem dokładne rozwiązanie jest osiągalne, ale nieopłacalne — kosztowałoby lata obliczeń. Kurier z 20 paczkami, szukający najkrótszej trasy, ma do wyboru więcej kolejności odwiedzin, niż jest sekund w historii wszechświata; przejrzenie wszystkich odpada. Co robi nawigacja? Stosuje heurystykę — regułę, która zwykle daje dobrą (niekoniecznie najlepszą) odpowiedź w rozsądnym czasie: na przykład „jedź zawsze do najbliższego nieodwiedzonego punktu" (znajoma zachłanność w nowej roli!), a potem lokalnie poprawiaj trasę. Cena: tracisz gwarancję optymalności. Umowa jest uczciwa, o ile zawiera się ją świadomie — heurystyka to narzędzie, nie wymówka.

⚠️ Uwaga, pułapka

Nie myl heurystyki z algorytmem przybliżonym „bo się pomyliłem". Heurystykę wybiera się świadomie, znając jej ograniczenia i umiejąc ocenić jakość wyniku. Odpowiedź maturalna „użyję heurystyki" bez słowa o tym, co tracimy, jest warta tyle, co „jakoś to będzie".

🌍 Powiązania

Abstrakcja to chleb powszedni wszystkich nauk: fizyk liczy rzut ukośny „bez oporu powietrza" (i wie, kiedy wolno), ekonomista rysuje popyt i podaż bez miliona czynników, a mapa PKP jest abstrakcją torów. Heurystyki zaś stosujesz codziennie: „na sprawdzianie rób najpierw zadania, które umiesz" nie gwarantuje maksimum punktów — ale zwykle się opłaca.

🛠️ Teraz Ty

Problem: „ułóż grafik dyżurów klasowych na semestr, uwzględniając nieobecności i sprawiedliwość". Zapisz w punktach: (1) jak zaatakujesz go zstępująco — jakie moduły widzisz z lotu ptaka; (2) jakie klocki zbudowałbyś wstępująco w pierwszej kolejności; (3) co pominiesz w modelu (abstrakcja) i (4) do jakiego znanego Ci problemu daje się to zredukować (podpowiedź: jednostka 1.1, zadanie 3). Bez komputera — to ćwiczenie z projektowania.

📐 Definicje tej lekcji

  • Metoda zstępująca — projektowanie od całości do szczegółów; elementy najpierw jako czarne skrzynki.
  • Metoda wstępująca — budowanie od małych, przetestowanych elementów ku całości.
  • Abstrakcja — pominięcie szczegółów nieistotnych dla celu; zatrzymanie istoty.
  • Redukcja — sprowadzenie nowego problemu do problemu już rozwiązanego.
  • Heurystyka — reguła dająca zwykle dobre rozwiązanie w rozsądnym czasie, bez gwarancji optymalności.

📌 Najważniejsze w pigułce

  • Zstępująco: od wizji do klamek; wstępująco: od klocków do zamku; w praktyce — oba naraz.
  • Abstrakcja i redukcja to dwa najczęstsze ruchy zawodowca: pomiń nieistotne, podepnij pod znane.
  • Heurystyka wymienia gwarancję optymalności na czas — i trzeba tę umowę zawierać świadomie.

🎒 Zadania

  1. Dla problemu „system zapisów na szkolne kółka" wypisz dekompozycję zstępującą (dwa poziomy) oraz trzy klocki, od których zacząłbyś wstępująco.
Wskazówka i odpowiedź

Zstępująco np.: (I) konta i logowanie, (II) katalog kółek z limitami, (III) zapisy i rezygnacje, (IV) raporty dla opiekunów; poziom niżej dla (III): sprawdzenie limitu → wpis na listę → potwierdzenie → lista rezerwowa. Wstępująco np.: „wczytaj listę kółek z pliku", „sprawdź, czy uczeń jest już zapisany", „policz wolne miejsca". Dobre klocki są małe i testowalne w pojedynkę.

  1. Schemat metra jest dobrą abstrakcją dla pasażera. Podaj dwa inne „widoki" tej samej sieci metra, które byłyby właściwą abstrakcją dla: (a) ekipy serwisującej tory nocą, (b) firmy planującej reklamy na stacjach.
Wskazówka i odpowiedź

(a) mapa z rzeczywistą geometrią torów, rozjazdami, dostępem technicznym i odległościami w metrach — kolejność stacji dla pasażera jest tu drugorzędna. (b) stacje z liczbą przechodzących osób w godzinach szczytu i powierzchniami reklamowymi — tory w ogóle nieistotne. Ten sam obiekt, trzy abstrakcje; „dobra abstrakcja" zawsze znaczy „dobra do czegoś".

  1. Nawigacja proponuje trasę przez miasto w ułamku sekundy, choć możliwych tras są miliardy. Wyjaśnij w 3–4 zdaniach, jakie strategie z tej jednostki musi łączyć — i dlaczego wynik bywa nieidealny.
Wskazówka i odpowiedź

Abstrakcja: miasto staje się grafem skrzyżowań i odcinków z czasami przejazdu (znikają krawężniki, witryny, kałuże). Redukcja: „dojedź najszybciej" to znany problem najkrótszej drogi w grafie. Heurystyki: przy ogromnych mapach i zmiennym ruchu algorytm przycina przeszukiwanie (np. preferuje kierunek „ku celowi") i korzysta z prognoz korków — dlatego trasa jest zwykle świetna, ale nie ma gwarancji, że absolutnie najlepsza; czasem lokalny kierowca zna sprytniejszy skrót.

🔍 Sprawdź, czy umiesz

  • Dobrać metodę (zstępująca/wstępująca) do opisanego projektu i uzasadnić wybór.
  • Wskazać abstrakcję i redukcję w rozwiązaniu, które ktoś Ci pokazał.
  • Wyjaśnić, co zyskuje i co traci algorytm heurystyczny.

Ucz się tej jednostki z asystentem