Wpis z mikrobloga

#informatyka #programowanie #programista15k #naukaprogramowania
Studiuje obecnie #matematyka na specjalizacji teoretycznej.
W przyszłym semestrze (o ile dotrwam XD) mogę sobie wybrać przedmioty które będe realizował.
Jakie gałęzie matematyki polecacie w stronę informatyki teoretycznej?

Nie chodzi mi o zagadnienia typu działanie procesora, systemy embedded, programowanie, a bardziej chodzi mi o rzeczy pokroju:
-optymalnego działanie na tablicach i strukturach danych
-zamiana funkcji rekurencyjnych na iteracyjne
-sprawdzenie czy mój sposób rozwiązania problemu był optymalny
-wyprowadzanie wzorów, i sprawdzanie dla jakich danych algorytm/równanie się wysypie

Odpowiadając na potencjalne pytanie czemu nie studiuję informatyki. Wychodzę z założenia że klepania kodu może się nauczyć każdy we własnym domu (z resztą sam napisałem pare gównokodów w różnych językach, jak np. apke pogodową w c# z xamarinem, proste silniki gier 2d w c++, pobieranie maili z gmaila pythonem czy symulacje w golangu), natomiast na uniwerku mogę się dowiedzieć jak optymalnie używać zaawansowanego kalkulatora z którego teraz piszę, oraz dlaczego coś zaprojektowano tak, a nie inaczej.
  • 9
optymalnego działanie na tablicach i strukturach danych


@RedveKoronny: algorytmy i struktury danych. Tylko, że teoria działa dobrze na teoretycznym komputerze. Złożoność obliczeniowa jest ważna ale dużo też zależy od tego jak procesory działają. Np. heap sort w teorii jest super algorytmem z dobrą złożonością ale używa się go bardzo rzadko, bo inne algorytmy działają lepiej w prawdziwych warunkach

zamiana funkcji rekurencyjnych na iteracyjne


algorytmy i struktury danych. Zamiana rekurencji na wersję
@Saly: popraw mnie jeśli się myle, ale raczej więcej mogę zyskać pisząc optymalne algorytmy niż stracić? Oczywiście, jeśli wiem że coś w praktyce działa gorzej, to nie będe tego używał, ale jeśli mogę równania rekurencyjne sprowadzić do pojedyńczej instrukcji, lub wiedzieć że w pewnych warunkach wykonywanie algorytmu jest bezcelowe (ponieważ wiem że nie uzyskam satysfakcjonującego mnie wyniku) to dlaczego by tego nie robić?
popraw mnie jeśli się myle, ale raczej więcej mogę zyskać pisząc optymalne algorytmy niż stracić?


@RedveKoronny: generalnie tak. Wyjątkiem jest napisanie zbyt skomplikowanego algorytmu, gdy nie jest to potrzebne bo. np input zawsze będzie tak mały, że nie ważne jak bardzo optymalny jest kod, bo ważniejsza jest czytelność. Innym problemem może być ślepe podążanie za teorią co może sprawić, że prostrzy i teoretycznie gorszy algorytm zachowuje się lepiej w praktyce

Algorytmów
@Saly:

tego za bardzo nie da się zrobić, przynajmniej dla ogólnego przypadku. Trzeba znaleść dowód np. jest dowód na to, że sortowanie poprzez porównywanie obu liczb to w najlepszym przypadku O(log(n) * n). Tak czy owak przedmiot to: algorytmy i struktury danych


chodzi mi właśnie o takie specyficzne wypadki. Jeżeli wiem że dany problem można rozwiązać w powiedzmy w log(n) kroków, a mi wychodzi złożoność wykładnicza

za bardzo nie rozumiem o
@RedveKoronny: generalnie to też zależy jaki wysoko mierzysz, bardziej złożone i trudniejsze algorytmiczne rzeczy są zazwyczaj rzadziej spotykane w ofertach pracy.

Ale osobiście pozdrawiam wszystkich fanów książki Matematyka Konkretna bo z niej nauczyłem się najwięcej :) potrzebnej algorytmikom matematyki.

Druga sprawa to czy chcesz iść w sztuczną inteligencję (nie tylko sieci neuronowe). Jeżeli tak to analiza matematyczna i metody numeryczne są też bardzo potrzebne.

Reszta to cykanie zadanek algorytmicznych typu SPOJ