Finding Needle in the Stack Graj za darmo

Oficjalny poradnik · Finding Needle in the Stack

Igła w stogu siana w informatyce

Programiści cały czas mówią „igła w stogu siana". Znalezienie jednego rekordu na miliard, jednej błędnej linii w ogromnym programie, jednego pakietu w powodzi ruchu: to ten sam problem, co stalowa igła w sianie. Gra o stogu siana okazuje się dobrym sposobem, żeby zobaczyć, jak działają rozwiązania.

Wykrywacz metali używany do tropienia igły

Wolna droga: obejrzeć wszystko

Jeśli nic nie wiesz o tym, gdzie jest igła, jedynym wyborem jest sprawdzanie każdego kawałka siana, aż ją znajdziesz. W informatyce nazywa się to wyszukiwaniem liniowym. Średnio sprawdzasz połowę wszystkiego, zanim ci się uda, a w najgorszym razie wszystko. Zawsze działa, ale czas rośnie proporcjonalnie do wielkości sterty.

Sortowanie zmienia wszystko

Wyobraź sobie teraz, że siano jest ułożone po kolei, jak słowa w słowniku. Sprytniejsza metoda, wyszukiwanie binarne, otwiera w środku, decyduje, w której połowie jest odpowiedź, i odrzuca drugą. Powtórz to, a milion elementów przeszukasz w około 20 krokach. Haczyk w tym, że sterta musi być najpierw uporządkowana, a stóg siana nigdy taki nie jest.

Indeksy: oszukiwanie przez przygotowanie

Bazy danych i wyszukiwarki omijają problem, wykonując ciężką pracę wcześniej. Budują indeks, jak spis na końcu książki, który mówi, na której stronie jest dane słowo. Szukanie staje się szybkie, bo czas został wydany wcześniej. Dla prawdziwego stogu siana nie ma indeksu i właśnie dlatego istnieje to powiedzenie.

Podążanie za sygnałem

Wykrywacz metali jest inny. Nie mówi ci, gdzie jest igła, ale czy się zbliżasz. Wyobraź sobie liczbę, która rośnie, gdy podchodzisz bliżej. Możesz wtedy użyć prostej reguły: zrób krok, sprawdź, czy sygnał się wzmocnił, i idź dalej w kierunku, który go poprawia. Programiści nazywają odmianę tego wspinaczką po wzgórzu (hill climbing) i stoi za nią wiele praktycznych optymalizacji.

W grze sygnał jest obliczany na podstawie twojej odległości od najbliższego kawałka metalu w porównaniu z zasięgiem wykrywacza. Piski przyspieszają, gdy ta liczba zbliża się do 1, więc twoje ucho wykonuje wspinaczkę za ciebie. Więcej w Jak działa wykrywacz metali.

Gdy sygnały zawodzą

Wspinaczka może utknąć. Jeśli blisko igły jest dużo metalowego złomu, najsilniejszy sygnał może zaprowadzić cię do gwoździa. Gra rozwiązuje to, dając wykrywaczom wyższego poziomu zdolność odróżniania igły. Prawdziwe poszukiwania napotykają ten sam problem i używają lepszych czujników albo dodatkowych filtrów.

Stóg jako dane

Stóg w grze sam jest strukturą danych: siatką 88 na 40 na 88 komórek, z których każda ma liczbę oznaczającą gęstość siana. Kopanie to zmienianie liczb, a chunki po 16 komórek utrzymują pracę na małą skalę. Jak to działa, wyjaśnia Jak działa stóg siana.

Gotowy do kopania?

Za darmo w przeglądarce, na PC i telefonie. Postęp zapisuje się automatycznie.

Graj za darmo