świstak.codes
O programowaniu, informatyce i matematyce przystępnym językiem

Autor: Tomasz Świstak

Problem skoczka szachowego
Zdjęcie wygenerowane przez DALL-E.
Tekst napisany przez człowieka.

Problem skoczka szachowego to jeden z popularniejszych problemów algorytmicznych. Często możemy go spotkać pośród zadań z algorytmiki dla adeptów programowania. Zobaczmy, na czym ten problem polega oraz jak go rozwiązać, i przede wszystkim... co ma to wspólnego z szeroko opisywanym przeze mnie ostatnio tematem grafów.

Czytaj więcej
Rysowanie grafów — algorytmy
Zdjęcie wygenerowane przez DALL-E.
Tekst napisany przez człowieka.

Mówiąc o grafach w kontekście algorytmiki, zwykle przywodzi na myśl rozwiązywanie za ich pomocą różnych problemów, np. poruszanego przeze mnie już w trzech artykułach szukania ścieżek. Rzadziej jednak porusza się temat tego, że jeśli chcemy graf narysować, należałoby rozmieścić jego wierzchołki w przestrzeni w pewien sensowny i uporządkowany sposób tak, aby jak najlepiej przedstawić jego charakterystykę. Znajomość przynajmniej rodzajów i właściwości algorytmów do tego służących to obowiązkowa wiedza dla osób zajmujących się wizualizacją danych. W artykule przedstawiam wszystko, co potrzebujesz wiedzieć na ten temat.

Czytaj więcej
Szybkie wyszukiwanie ścieżek
Zdjęcie wygenerowane przez DALL-E.
Tekst napisany przez człowieka.

Klasyką algorytmiki jest wykorzystywanie takich algorytmów, jak BFS, algorytm Dijkstry czy Bellmana-Forda do wyszukiwania najkrótszych ścieżek. Jednak algorytmy te wykonują bardzo dużo operacji i przy rozbudowanych przypadkach, takich jak znajdowanie tras na mapie albo nawet ścieżki, po której ma przejść postać w grze komputerowej, mogą być zbyt wolne czy też zająć zbyt dużo pamięci. Na szczęście są również inne podejścia do tego problemu, dużo wydajniejsze, jeśli posiadamy nieco więcej informacji o grafie. Czas najwyższy poznać jedno z nich — algorytm A*.

Czytaj więcej
Szukanie najkrótszych ścieżek w grafie
Zdjęcie: Image by Jayne from Pixabay
Tekst napisany przez człowieka.

Gdy mówimy o grafach i rozwiązywaniu problemów za ich pomocą, w kontekście algorytmiki pierwszą rzeczą, która wielu przychodzi na myśl, jest wyszukiwanie najkrótszych ścieżek. Co prawda omówiliśmy już to dla grafów nieważonych, ale powiedzmy sobie szczerze — zwykle musimy to robić w ważonych. Opiszę tutaj trzy klasyczne algorytmy rozwiązujące ten problem.

Czytaj więcej
Praktyczne zastosowania przechodzenia po grafie
Zdjęcie: Photo by form PxHere
Tekst napisany przez człowieka.

W artykule „Przechodzenie po grafie” przedstawiłem algorytmy służące do przechodzenia po węzłach grafu — DFS (przechodzenie w głąb) oraz BFS (przechodzenie wszerz). Jednak samo odwiedzanie węzłów może wydawać się na pierwszy rzut oka mało przydatne, dlatego przedstawię trzy sposoby, jak można wykorzystać te algorytmy do celów praktycznych. Użyjemy też wszystkie trzy pokazane tam sposoby przechodzenia grafu: rekurencyjny DFS, iteracyjny DFS oraz BFS.

Czytaj więcej
Grafy — wprowadzenie
Grafika: Elena Tatiana Chis, CC BY-SA 4.0, via Wikimedia Commons
Tekst napisany przez człowieka.

Grafy to jedna z najważniejszych koncepcji matematycznych, które na stałe weszły do świata informatyki. Wielu programistów może nie dostrzegać tego na pierwszy rzut oka, ale znajdziemy je niemal wszędzie. Warto wiedzieć, czym one są i jak działają, niezależnie od tego, czym w świecie IT się zajmujemy. Jest to też temat dość mi bliski, bo zawodowo mam do czynienia z praktycznym zastosowaniem grafów od dłuższego czasu. W tym wpisie opisuję je od strony teoretycznej, aby przedstawić, czym są, skąd się wzięły i przede wszystkim, jakie znalazły zastosowania. Na początku nie przedstawię całej teorii grafów, tylko moim zdaniem jej najważniejsze elementy.

Czytaj więcej
świstak.codes powraca!
Oryginał zdjęcia opublikowany w serwisie Flickr przez Bernd Thaller na licencji CC BY 2.0
Tekst napisany przez człowieka.

W końcu nadszedł ten długo oczekiwany dzień. świstak.codes powróciło w nowej odsłonie. Poza dość widoczną zmianą wyglądu, zmieniła się część techniczna strony — nie polegam już na WordPressie, tylko w całości na autorskim rozwiązaniu. Jesteś ciekaw(a) szczegółów? Więcej w dalszej części wpisu.

Czytaj więcej