|
 |
|
 |
|
| News |
Na stronach serwisu pojawiła się możliwość dodawania własnych implementacji przedstawianych algorytmów i metod. Rozszerzyliśmy listę wspieranych języków programowania, zapraszamy do pobierania i udostępniania własnych programów!
| |
| |
 |
|
 |
|

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 |
Uruchomiliś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 |
Na 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 |
Udostę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 |
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. Wkrótce również każdy zarejestrowany użytkownik będzie mógł dodawać własne artykuły, póki co czekamy na przesyłanie ich na nasz e-mail. | |
|
|
 |
|
 |
|
|
|
 |
|
 |
|
|
Nowości |
-
Zamiana liczby na słowa z polską gramatyką
Bardzo często spotykam się na forach i w programach z problemem zamiany liczb na postać słowną. Zauważyłem że prawie nigdzie nie jest uwzględniona polska gramatyka, przykładowo liczba 112004033 wygląda co najmniej tak jed*jed*dwa*zero*zero*cztery*zero*trzy*trzy lub w najlepszym przypadku tak sto dwanascie mln. cztery tys. trzydziesci trzy.
Dla każdego rzędu wielkości w polskiej...
-
Algorytm Cohena-Sutherlanda
Załóżmy, że mamy dany pewien zbiór odcinków oraz okno, które definiuje nam obszar widziany przez użytkownika. W zależności od wielkości okna oraz jego położenia część odcinków znajdzie się w oknie - powinna zostać pokazana, a część znajdzie się poza oknem - nie powinna być brana pod uwagę. Takie zadanie sprawnie...
-
Całkowanie numeryczne - metoda Simpsona
Załóżmy, że chcemy obliczyć całkę z funkcji f(x) w przedziale <xp;
xk>. Definicja całki oznaczonej Riemana, mówi nam, że wartość całki równa jest
sumie pól obszarów pod wykresem krzywej w zadanym przedziale całkowania. Sumę taką możemy
obliczyć w przybliżeniu dzieląc obszar całkowania na n równych części.
W metodach prostokątów (?option=com_content&task=view&id=198&Itemid=28)...
-
Edytor Grafów
/* The default text style used on every page */
#hover
.center
.top
#toolbar_wrapper
form
a, a:visited
a:visited:hover, a:link:hover
a img
select, input
{
font-family:"lucida grande", tahoma, verdana, arial, sans-sarif;
font-size:11px;
background-color:#FFFFFF;
border:1px solid #8FB6BD;
height:18px;
}
textarea
textarea:focus
/* ------- Button formating ------ */
.bluebutton, .lightbluebutton, .greybutton {
border-style:...
-
Silnie spójne składowe
Dla grafów nieskierowanych zostało zdefiniowane pojęcie spójnych składowych, czyli maksymalnych fragmentów grafu, które są spójne (pomiędzy każdymi dwoma wierzchołkami istnieje ścieżka). Do sprawdzania czy graf jest spójny oraz znajdowania jego spójnych składowych wykorzystywany jest algorytm DFS lub BFS (?option=com_content&task=view&id=98&Itemid=28).
Odpowiednikiem tej definicji dla grafów skierowanych są silnie spójne składowe. Silnie spójna...
|
|
|
 |
|
 |
|
 |
|
 |
|
|
Popularne |
-
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...
-
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!,...
-
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 (?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....
-
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:
Rys.1. Graf nieskierowany
Rys.2. Graf skierowany
Jeśli krawędź łączy dwa wierzchołki to jest z nimi incydentna.
Pętla własna to krawędź łączące wierzchołek z...
-
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 (?option=com_content&task=view&id=44&Itemid=27), w odróżnieniu jednak od Algorytmu Forda-Bellmana (?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 których nie obliczono jeszcze najkrótszych ścieżek, oraz...
|
|
|
 |
|
 |
|
 |
|
 |
|
|
Najwyżej oceniane |
-
REGON
Regon jest numerem identyfikującym podmioty gospodarcze w Polskim Rejestrze Gospodarki Narodowej. Dawniej numer ten był 7-cyfrowy, później REGON rozszerzono na 9 cyfr. Dawne numery 7-cyfrowe poprzedzono dwoma 0, uzyskując w ten sposób numery 9-cyforwe.
Jak mówi rozporządzenie "Sposób i metodologia prowadzenia i aktualizacji rejestru podmiotów gospodarki narodowej...", Dz.U.99.69.763 numer REGON składa...
-
Współliniowość trzech punktów
Zrozumienie tego algorytmu wymaga zaznajomienia się ze wstępem do geometrii obliczeniowej (?option=com_content&task=view&id=56&Itemid=26)
Wzajemne położenie trzech punktów a, b i c można bardzo łatwo określić korzystając z wyznacznika det(a,b,c) macierzy kwadratowej postaci:
det (a,b,c)>0 : punkt c znajduje się po lewej stronie wektora AB -
det (a,b,c)=0 : punkty a, b, i c...
-
Zbiór Mandelbrot'a
Po raz pierwszy pojęcie fraktala zostało użyte przez Benoit Mandelbrota w latach 70-tych XX wieku. Po łacinie fractus oznacza podzielny, ułamkowy, cząstkowy. Nazwa ta nie ma ścisłej matematycznej definicji. Oznacza ona obiekty, które mają nietrywialną strukturę w każdej skali oraz są samopodobne - czyli każda ich część przypomina całość....
-
EAN-13
By kod EAN-13 (http://www.algorytm.org/index.php?option=com_content&task=view&id=143&Itemid=54) mógł zostać automatycznie "przeczytany" przez urządzenia skanujące musi zostać przetworzony do postaci kodu kreskowego. Sposób kodowania jest na pierwszy rzut oka nieco skomplikowany a to wszystko za sprawą kodu UPC-A (?option=com_content&task=view&id=207&Itemid=54), z którym musiał być on zgodny. Jest on 12-cyfrowy a EAN-13 jest 13-cyfrowy. Trzeba było...
-
Odległość Levenshteina (odległość edycyjna)
Algorytm Levenshteina, służy do liczenia odległości edycyjnej (odległości Levenshteina). Jest to najmniejsza liczba działań prostych, przeprowadzająca jeden napis w drugi.
Działania proste to:
wstawienie nowego znaku
usuniecie znaku
zamiana na inny znak
Idea algorytmu to stworzenie tablicy dwuwymiarowej, o wymiarach n+1 na m+1 gdzie n i m to odpowiednio długości porównywanych słów.
Pierwszy wiersz i kolumnę...
|
|
|
 |
|
 |
|
|
|
Gościmy |
Aktualnie jest 12 gości online
|
|