Start
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Gościmy
Aktualnie jest 69 gości online


Sonda
Implementacji w jakim języku programowania poszukujesz?
 
News
Baza Wiedzy algorytm.org - offline'owa wersja serwisu przeznaczona na urządzenia z systemem Android. Interfejs został przystosowany specjalnie na urządzenia mobilne. Duże przyciski nawigacyjne oraz przycisk wstecz ułatwiają przeglądanie zasobów. Teraz możesz całą wiedzę serwisu mieć zawsze pod ręką!


Algorytmy i Struktury Danych


Serwis Algorytmy i struktury danych powstał na przełomie lat 2000 i 2001. Postanowiliśmy stworzyć witrynę wyłącznie o algorytmach i konsekwentnie ją rozbudowywać. Chcieliśmy stworzyć stronę z materiałami dostępnymi również w podręcznikach, lecz opisanymi dużo prościej, mniej formalnie, z przykładami oraz implementacją. Na stronach serwisu znajdziesz setki artykułów z dołączonymi rysunkami, zdjęciami i schematami blokowymi. Istniejące opisy cały czas uzupełniamy i poprawiamy zgodnie z waszymi sugestiami. Oprócz szczegółowych opisów metod oraz przykładów ich użycia znajdziesz tutaj ponad pół tysiąca implementacji w wielu językach programowania. Każdy z artykułów może być komentowany. Możesz podzielić się uwagami na temat algorytmu, podać dodatkowe przykłady, informacje, przypadki szczególne, itp... Z całej zawartości serwisu możesz korzystać bez żadnych opłat i rejestracji!


Wygeneruj graf
Automatyczne generowanie grafówUruchomiliśmy autorski skrypt pozwalający szybko i sprawnie tworzyć reprezentacje graficzną grafów. Przy jego pomocy tworzyć można zarówno grafy skierowane jak i nieskierowane. Każdy wierzchołek oraz krawędź może być oznaczona wybraną etykietą oraz kolorem. Używając tego narzędzia troszczysz się jedynie o zdefiniowanie zbioru wierzchołków i krawędzi, całą pracę polegającą na takim graficznym ustawieniu elementów by przecięć pomiędzy krawędziami było jak najmniej, by całość wyglądała schludnie i przejrzyście załatwia za Ciebie program. Twoja decyzja polega jedynie na wybraniu preferowanej orientacji grafu (pozioma lub pionowa). Wyjściowy obraz może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania grafów
Wygeneruj schemat blokowy
Narzędzie generowania schematów blokowychNa naszych stronach znajdziesz kolejny autorski skrypt. Tym razem jest to narzędzie pozwalające szybko i sprawnie tworzyć schematy blokowe. Przy jego pomocy tworzysz zbiór bloków wykonywalnych oraz decyzji. W kolejnym kroku definiujesz ich zawartość oraz ich następniki czyli bloki/decyzje, które mają być wykonywane jako następne. Przed wygenerowaniem schematu skrypt sprawdzi czy wszystkie wejścia i wyjścia z bloków są przypisane. Używając tego narzędzia skupiasz się na logice tworzonego schematu blokowego, żmudną pracę polegającą na odpowiednim ułożeniu elementów, by całość wyglądała schludnie i przejrzyście wykonuje za Ciebie program. Wyjściowy schemat może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania schematów blokowych
Wygeneruj wzór matematyczny
Narzędzie do generowania wzorów matematycznychUdostępniliśmy narzędzie do graficznego tworzenia i generowania wzorów matematycznych w programie Latex. Dzięki niemu w prosty sposób wygenerować można nawet skomplikowane wzory wykorzystujące macierze, pierwiaski, indeksy górne, dolne a także wiele innych. Tworzenie wzoru polega na wybieraniu gotowych wzorców prezentowanych w formie graficznej. Wyjściowy wzór może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania wzorów matematycznych
Weź udział w powstawaniu strony
Weź udział w powstawaniu strony Uruchomiliśmy możliwość dodawania implementacji do zamieszczonych algorytmów, metod i struktur danych przez wszystkich zarejestrowanych użytkowników portalu. Całość została zintegrowana z systemem informacji o użytkownikach dzięki czemu, potencjalny pracodawca po jednym kliknięciu na nazwisko twórcy ma dostęp do wszystkich jego artykułów, implementacji, komentarzy oraz wpisów na forum. Każdy zarejestrowany użytkownik może również dodawać własne artykuły.


Nowości
  • Algorytm Manachera
    Mamy pewne słowo s[1..n], gdzie chcemy dla każdego i, takie że 1 ≤ i ≤ n wyznaczyć R[i], będące promieniem największego palindromu parzystego który ma środek w i. Dokładniej R[i] to taka największa liczba, że s[i-R[i] .. i+R[i]+1] jest palindromem parzystej długości. Algorytm działa tak, wyliczamy pierwszą wartość funkcji R, a potem w czasie stałym znajdujemy wartości R[i+k] dla k, takiego...
  • Baza Wiedzy algorytm.org
    Baza Wiedzy algorytm.org - to offline'owa wersja serwisu przeznaczona na urządzenia z systemem Android. Interfejs został przystosowany specjalnie na urządzenia mobilne. Duże przyciski nawigacyjne oraz przycisk wstecz ułatwiają przeglądanie zasobów. Teraz możesz całą wiedzę serwisu mieć zawsze pod ręką! Oto najważniejsze cechy aplikacji: blisko 300 artykułów...
  • Snake
    Snake – gra komputerowa, w której gracz za pomocą klawiszy strzałek steruje wężem. Wąż porusza się w zamkniętym prostokącie i nie może „uderzyć” w samego siebie. Zadaniem gracza jest zdobycie jak największej liczby punktów, poprzez karmienie węża pojawią cym się na ekranie pokarmem (przyjąłem, że są to jabłka). Założenia gry: Nie ma limitu czasowego Plansza jest ograniczona do prostokąta ograniczonego ścianami Wąż...
  • Losowanie bez powtórzeń
    Załóżmy, że mamy wylosować k liczb z n (oczywiście k ≤ n). Aby uniknąć powtórzeń bierzemy tablicę numbers wielkości n i wypełniamy ją kolejnymi liczbami. Losujemy indeks r pomiędzy 0 a n-1, liczba spod tego indeksu jest naszą wylosowaną. Teraz przenosimy ostatnią liczbę w tablicy do pozycji r: numbers[r] = numbers[n - 1] i zmniejszamy n o jeden. Algorytm ten można przedstawić następującym...
  • Metoda najmniejszych kwadratów
    Mamy zbiór n punktów (xi, yi) dla których chcielibyśmy dopasować funkcję liniową y = ax + b. Należy znaleźć takie dwie liczby rzeczywiste a oraz b aby jak najwięcej punktów leżało blisko tej prostej. Jako kryterium przyjmujemy minimalizację sumy kwadratów różnic między punktami yi a wyliczonym y = axi + b. Suma kwadratów różnic charakteryzuje się tym że: składniki...


Najczęściej czytane
  • Schematy blokowe
    Schematy blokowe są tzw. metajęzykiem. Oznacza to, że jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne, np. prostokąt, romb, koło, równoległobok itd... W tych figurach umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem...
  • Sortowanie szybkie (quicksort)
    Algorytm sorotwania szybkiego jest uważany za najszybszy algorytm dla danych losowych. Zasada jego działania opiera się o metodę dziel i zwyciężaj (index.php?option=com_content&task=view&id=63&Itemid=26). Zbiór danych zostaje podzielony na dwa podzbiory i każdy z nich jest sortowany niezależnie od drugiego. Dla zadanej tablicy a[l..p] wybieramy element v=a[l] i przeszukujemy resztę tablicy (tzn. a[l+1..p]) tak długo, aż nie znajdziemy...
  • Grafy i ich reprezentacje
    Na początek kilka definicji: W informatyce grafem nazywamy strukturę G=(V, E) składającą się z węzłów (wierzchołków, oznaczanych przez V) wzajemnie połączonych za pomocą krawędzi (oznaczonych przez E). Grafy dzielimy na grafy skierowane i nieskierowane: ...
  • Algorytm Dijkstry
    Algorytm Dijkstry służy do wyznaczania najmniejszej odległości od ustalonego wierzchołka s do wszystkich pozostałych w skierowanym grafie (index.php?option=com_content&task=view&id=44&Itemid=27), w odróżnieniu jednak od Algorytmu Forda-Bellmana (index.php?option=com_content&task=view&id=94&Itemid=0), graf wejściowy nie może zawierać krawędzi o ujemnych wagach. W algorytmie tym pamiętany jest zbiór Q wierzchołków, dla...
  • Rekurencja
    Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być tylko liczby naturalne. Najłatwiej zrozumieć mechanizm działania rekursji na przykładzie silni: rekurencyjny wzór na obliczenie n! zapisuje się w ten sposób: n!=n*(n-1)! Ze wzoru tego wynika, że aby obliczyć np. 4!, należy najpierw obliczyć 3!. Ale żeby obliczyć 3! trzeba obliczyć 2!...


Najwyżej oceniane
  • Histogram
    Histogram obrazu w odcieniach szarości wyznaczany jest jako suma wszystkich pikseli o danej wartości. Przeanalizujmy to na przykładzie. Mamy dany obraz o wymiarze 3x2, o 4 odcieniach szarości (0-3). Czcionką pogrubioną zaznaczono aktualnie rozpatrywaną komórkę obrazu. Obraz 101 221 Historgam...
  • Problem 8 hetmanów
    Problem 8 hetmanów polega na ustawieniu na szachownicy tychże figur tak, aby żadna z nich nie mogła zabić innej. Królowa, zwana hetmanem, ustawiona na szachownicy atakuje wszystkie pola w poziomie, w pionie i po skosie. Problem ten został sformułowany przez J.C. Gaussa w 1850 roku. Oto przykład jednego z 92 możliwych rozwiązań: ...
  • L-systemy
    L-systemy (systemy Lindemayera), znajdują zastosowanie w grafice komputerowej, szczególnie w generowaniu fraktali i modelowaniu roślin. L-systemy wykorzystują tzw. produkcje. Działają one w następujący sposób: dany mamy symbol początkowy zwany aksjomatem - niech będzie to np. ac. Dane są również reguły np: a:b oraz b:ba - co w uproszczeniu możemy czytać następująco: jeżeli mamy a to zastępujemy je symbolem b, jeżeli...
  • Cykliczna Kontrola Nadmiarowa
    Wszędzie, gdzie przesyłane są dane pojawia się ryzyko wystąpienia błędów, przesyłane informacje mogą dotrzeć zmienione lub zostać zagubione. W takich przypadkach z pomocą przychodzą nam różne sumy kontrolne, najprostszym przykładem jest choćby kontrola parzystości. Istnieje jednak dużo lepsza metoda sprawdzania poprawności danych, jest nią CRC (ang. Cyclic Redundancy Check: Cykliczna Kontrola Nadmiarowa). Jest ona bardzo powszechnie stosowana...
  • Skala szarości
    Obraz w odcieniach szarości jest obrazem w którym udział każdej składowej R, G, B jest taki sam. Składowe R, G, B są zatem w stosunku 1:1:1. Wykonanie obrazu w odcieniach szarości sprowadza się do takiego przekształcenia obrazu aby uzyskać dla każdego piksela obrazu odpowiednio do stopnia jasności piksela taki sam udział każdej z tych składowych. W tym celu najpierw odczytuje się piksel obrazu o określonym kolorze z odpowiednim udziałem każdej ze...