Jason. Cała informatyka w jednym miejscu!

Stęskniłem się za redagowaniem, więc postanowiłem otworzyć nową serię artykułów dla adeptów IT. Tym razem będzie to algorytmika! Dowiadujcie się czym prędzej czego się spodziewać z mojej strony...na mojej stronie! A będzie o czym pisać!

ALGORYTMIKA OD DZISIAJ JEST KOLEJNĄ DZIEDZINĄ NAUKOWĄ!

Dotychczas robiłem tak, że wraz z czytaniem książki zbierałem materiał na artykuły naukowe i publikowałem je dzień w dzień z niewielkim odstępem czasowym od rozpoczęcia czytania. Ponieważ od czasu rozpoczęcia studiów magisterskich robią mi się za często "wąskie gardła", zmieniłem taktykę i teraz zacznę otwierać kolejne dziedziny wiedzy na mojej stronie w sposób nieregularny. Tak naprawdę, kiedy tylko znajdę na to odpowiedni moment.

TO I OWO O ALGORYTMACH

Algorytmika jest jedną z gałęzi informatyki polegającą na poznawaniu algorytmów, rozróżnianiu ich mocnych i słabych stron oraz szacowaniu efektywności od strony pamięciowej i czasowej. Oprócz dużego wora sprawdzonych i przetestowanych algorytmów od sortowania do "hashowania" danych, jest również seria zagadnień poświęconych strukturom danych i też w tym przypadku programista powinien wiedzieć której użyć w jakiej sytuacji. Poza tymi dwoma punktami, algorytmika zajmuje się także szacowaniem złożoności obliczeniowej i pamięciowej niezależnie od możliwości sprzętowych, jak i samego procka (tzw. notacja dużego O).

W sumie nie ma żadnego czynnika oceniającego poziom znajomości algorytmiki. Im więcej wiesz, tym lepiej i nie da się ocenić obiektywnie przez dział ds. rekrutacji ani samego siebie ile się potrafi. Wiem na czym polegają tablice, listy wiązane, stosy, sterty, tablice asocjacyjne i parę innych rzeczy. Potrafię oszacować efektywność algorytmu poprzez notację dużego O, więc można napisać że to umiem. Tylko na ile? Właśnie. Przechodząc przez rozmowy rekrutacyjne, miałem tylko jeden raz pytanie tyczące się bezpośrednio algorytmów. Czy to znaczy, że należy odstawić ten temat na bok? No pewnie, że nie! Jest równie istotny, a już na pewno trzeba wiedzieć o nim jakieś minimum, choćby od strony znajomości gotowych patentów aby szybciej dojść do rozwiązania problemu.

Małe "too long, didn't read" na podsumowanie na co składa się algorytmika:

  • poznawanie szerokiej gamy rozwiązań problemów z różnych dziedzin, takich jak sortowanie, wyszukiwanie, modyfikowanie i wiele innych
  • poznawanie struktur danych wraz z charakterystyką słabych i mocnych stron oraz zdolnością do samodzielnego wyboru najefektywniejszej z nich dla postawionego problemu
  • poznawanie notacji do szacowania złożoności obliczeniowej i pamięciowej poszczególnych algorytmów (theta, omega i dużego O)

SERIA W DUŻYM UPROSZCZENIU

Teraz dwa słowa o samej serii jaką będę się zajmował. Oprócz terminologii i teorii (choćby na temat samego pojęcia "algorytm"), każdy pojedynczy artykuł jaki poświęcę na konkretny problem zostanie podzielony na dwie części: wyjaśnienie teoretyczne i przykładowy program napisany w języku Java. Javę wybrałem nie dlatego, że jest powszechnie używana i jest jednym z najpopularniejszych języków, ale dlatego że nie posiada aż takich abstrakcyjnych wygód jakimi może pochwalić się na przykład Python, dzięki czemu można będzie wyjaśnić jakie operacje trzeba konkretnie zaimplementować, aby nasz cel został osiągnięty, ale też na drugiej szali połóż żeby nie programować wskaźników w C. W odpowiednich instrukcjach zostawię swój komentarz, aby kody źródłowe nie pozostawiały najmniejszych wątpliwości.

Nie mam z góry określonego maksimum materiału jaki chcę opublikować. Pokażę kilka problemów wraz z rozwiązaniem jak ja to rozumiem przykładając się tak, jak tylko można. Potem poczekam na zainteresowanie i jak zacznie to prosperować, wtedy co jakiś czas postaram się dołożyć nowy wpis. Algorytmy wbrew pozorom, są rozległą dziedziną wiedzy ze względu na ogromną liczbę rozwiązywalnych (jak i nierozwiązywalnych) problemów.

Notacja dużego O

Algorytmika to dziedzina wiedzy polegająca m.in. na szacowaniu efektywności algorytmów pod kątem złożoności obliczeniowej i pamięciowej, niezależnie od możliwości sprzętowych.


Do zobaczenia w pierwszym materiale o algorytmice, w którym zaczniemy od samego początku. Czyli od wierzchołka góry lodowej...a zaczniemy od terminu "algorytm"!