Nauka algorytmów

0

Witam mam pytanie,bo zawsze wydawało mi się,że umiejętność pisania algorytmów zależy tylko od predyspozycji człowieka i to jest na pewno częściowo prawdą,ale zastanawiam się czy przy robieniu ćwiczeń,czytaniu o algorytmach człowiek może rozwinąć umiejętność pisania algorytmów?Wszystkich algorytmów nie da sie nauczyć i dlatego sie zastanawiam.

0

Poczytaj:
Jon Bentley Perełki programowania,
Wirth Niklaus - Algorytmy + struktury danych = programy.

To stare książki ale bardzo aktualne i dzisiaj...

0

Do tego jeszcze obowiązkowo:
Edsger Dijkstra - UMIEJĘTNOŚĆ PROGRAMOWANIA.

0

Pisanie algorytmów bym podzielił na dwie kategorie:

  • stosowanie klasycznych algorytmów
  • tworzenie nowych algorytmów

Stosowania klasycznych algorytmów polega na wykorzystywaniu znanego algorytmu (opisanego gdzieś np w Cormenie) do rozwiązania swojego problemu i tego jak najbardziej można i warto się nauczyć.
Natomiast gdy trzeba rozwiązać trudniejszy problem (nieopisany w żadnej książce/internecie) i napisać kompletnie własny algorytm, no to cóż, im więcej "talentu" tym lepiej.

Wiele problemów w życiu codziennym programisty sprowadza się właśnie do tej pierwszej kategorii, także początkowe zadani w konkursach algorytmicznych zwykle wymagają wyłącznie zastosowania jakiegoś z klasycznych algorytmów.

0

Owszem, czytanie i robienie ćwiczeń pomaga. Popytaj kolegów olimpijczyków, to kwestia wyćwiczenia.
Jednemu może zająć to rok, innemu trzy lata albo więcej, a i tak znajdzie się coś nowego, czego możesz się nauczyć. Przecież całą Twoją obecna wiedza i umiejętności, to wynik tego robiłeś przez wszystkie lata wcześniej.

Nie wiem co rozumiesz przez wszystkie algorytmy, ale kanon warto znać, czyli m.i. sortowania, bisekcje, drzewa, grafy, algorytmy tekstowe, hashowanie.

0

Ok dzieki za odp,głownie chodziło mi o to,że jak dostane zadanie z algorytmu którego nigdy nie widziałem to czy bedzie łatwiej mi go rozwiązać jeżeli wczesniej dużo ćwiczyłem i czytałem o innych algorytmach niż jakbym polegał tylko na intelekcie.Odp juz znam dzieki.

1

a ja bym miał pytanie do starszych kolegów algorytmików albo tych co wiedzą :P
jak to wygląda w praktyce, znajomość algorytmów? czy są jakieś konkretne rzeczy które warto robić żeby przestawić się na algorytmiczne myslenie? Niemal pewne jest, że w świecie pracy nie dostaniesz zadania jak na SPOJu, ale przy pewnych zadaniach znajomosc teorii algorytmów może pomóc

chodzi mi o to, że czasem znajomość np algorytmu dijkstry pomoże nam w zadaniu które z pozoru nie jest algorytmicznym wyzwaniem; że to nie chodzi o 100% perfekcyjna znajomosc każdego algorytmu w każdym wydaniu, ale czucie kiedy, co użyć

To się po prostu przyswaja samo, znając teorie algorytmów i w miare z upływem czasu coraz bardziej to wchodzi w krew
czy raczej istotne jest klepanie typowo algo-tasków takich jak np ma SPOJ czy inne tego typu strony?

0

Istotne jest pisanie. Bez tego nie zauważasz albo nie zwracasz uwagi. Jak już kilka razu użyjesz jakiejś techniki, to się przestawisz na filtrowanie miejsc gdzie można to wykorzystać.

SPOJ sobie daruj, zajrzyj do:
Codility
topcoder
oj.leetcode.com
hackerrank
codeforce

0

Ale tobie chodzi o tworzenie "algorytmow" zeby przejsc testy na codility, czy o tworzenie super-hiper algorytmow, ktorych nikt jeszcze nie uzywa? W pierwszej opcji polece Ci kodowac, kodowac... i kodowac. Samemu sie tego nauczysz rozwiazujac coraz to nowe problemy.

Co do drugiej.. zastanow sie czy Ci to w ogole potrzebne jak chesz zostac devem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1