Algorytm jest sekwencją dobrze zdefiniowanych kroków, które definiują abstrakcyjne rozwiązanie problemu. Użyj tego tagu, gdy Twój problem dotyczy projektowania i analizy algorytmów.
W standardowym kursie z algorytmów uczymy się, że quicksort wynosi średnio a O ( n 2 ) w najgorszym przypadku. Jednocześnie badane są inne algorytmy sortowania, które w najgorszym przypadku to O ( n log n ) (np. Scalesort i heapsort ), a nawet czas liniowy w najlepszym przypadku (np. …
Istnieje wiele pytań dotyczących sposobu analizowania czasu pracy algorytmów (patrz np runtime-analiza i algorytm-analysis ). Wiele z nich jest podobnych, na przykład ci, którzy proszą o analizę kosztów zagnieżdżonych pętli lub algorytmy dzielenia i zdobywania, ale większość odpowiedzi wydaje się być dostosowana do indywidualnych potrzeb. Z drugiej strony odpowiedzi na …
Pozwól mi wyjaśnić: Biorąc pod uwagę wykres punktowy pewnej liczby punktów n, jeśli chcę znaleźć mentalnie najbliższy punkt do dowolnego punktu na wykresie, mogę natychmiast zignorować większość punktów na wykresie, zawężając moje wybory do niewielkiej, stałej liczby punktów w pobliżu . Jednak przy programowaniu, biorąc pod uwagę zestaw punktów n, …
Konwersja wyrażeń regularnych na (minimalne) NFA, które akceptują ten sam język, jest łatwa dzięki standardowym algorytmom, np . Algorytmowi Thompsona . Drugi kierunek wydaje się jednak bardziej nużący, a czasem wynikowe wyrażenia są nieuporządkowane. Jakie są algorytmy przekształcania NFA w równoważne wyrażenia regularne? Czy są zalety dotyczące złożoności czasu lub …
Aby spróbować sprawdzić, czy algorytm dla jakiegoś problemu jest prawidłowy, zwykle punktem wyjścia jest próba uruchomienia algorytmu ręcznie na kilku prostych przypadkach testowych - wypróbuj go na kilku przykładowych przypadkach problemów, w tym na kilku prostych „przypadkach narożnych” „. To świetna heurystyka: to świetny sposób na szybkie wyeliminowanie wielu niepoprawnych …
Drzewo indeksowane binarnie nie ma żadnej literatury lub ma stosunkowo niewiele literatury w porównaniu do innych struktur danych. Jedynym miejscem, w którym jest nauczany, jest samouczek topcodera . Chociaż samouczek jest kompletny we wszystkich objaśnieniach, nie rozumiem intuicji stojącej za takim drzewem? Jak został wymyślony? Jaki jest faktyczny dowód jego …
Zastanawiam się nad tym pytaniem, odkąd byłem studentem. To pytanie ogólne, ale opiszę poniżej przykłady. Widziałem wiele algorytmów - na przykład dla problemów z maksymalnym przepływem znam około 3 algorytmów, które mogą rozwiązać problem: Ford-Fulkerson, Edmonds-Karp i Dinic, przy czym Dinic ma najlepszą złożoność. W przypadku struktur danych - na …
W większości klas algorytmów wprowadzających wprowadzane są notacje takie jak (Big O) i , a uczeń zazwyczaj uczy się korzystania z jednej z nich w celu znalezienia złożoności czasowej.ΘOOOΘΘ\Theta Istnieją jednak inne oznaczenia, takie jak , i . Czy są jakieś konkretne scenariusze, w których jedna notacja byłaby lepsza od …
Istnieją dwie metody partycji Quicksort wymienione w Cormen: Hoare-Partition(A, p, r) x = A[p] i = p - 1 j = r + 1 while true repeat j = j - 1 until A[j] <= x repeat i = i + 1 until A[i] >= x if i < j …
Podczas poszukiwania wykresy istnieją dwa proste algorytmy: szerokość pierwszego i głębokość pierwszego (zazwyczaj przez dodanie wszystkich węzłów adjactent wykres w kolejce (wszerz) lub stosu (głębokość pierwszego)). Czy są jakieś zalety jednego nad drugim? Te, o których mogłem myśleć: Jeśli spodziewasz się, że Twoje dane będą znajdować się dość głęboko na …
Zwykle w algorytmach nie dbamy o porównywanie, dodawanie lub odejmowanie liczb - zakładamy, że działają one w czasie O ( 1 )O(1)O(1) . Na przykład zakładamy, że mówimy, że sortowanie na podstawie porównania to O ( n logn )O(nlogn)O(n\log n) , ale gdy liczby są zbyt duże, aby zmieścić się …
Kilka lat temu MapReduce został okrzyknięty rewolucją programowania rozproszonego. Byli też krytycy, ale ogólnie był entuzjastyczny szum. Zostało nawet opatentowane! [1] Nazwa nawiązuje mapi reduceprogramowania funkcjonalnego, ale kiedy czytam (Wikipedia) Krok mapy: węzeł główny pobiera dane wejściowe, dzieli je na mniejsze podproblemy i rozdziela je na węzły robocze. Węzeł roboczy …
Otrzymujesz tablicę elementów2n2n2n a1,a2,…,an,b1,b2,…bna1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n Zadanie polega na przeplataniu tablicy przy użyciu algorytmu lokalnego, takiego jak tablica wynikowa b1,a1,b2,a2,…,bn,anb1,a1,b2,a2,…,bn,anb_1, a_1, b_2, a_2, \dots , b_n, a_n Gdyby nie istniał wymóg lokalny, moglibyśmy łatwo utworzyć nową tablicę i skopiować elementy, dając algorytm czasowy .O(n)O(n)\mathcal{O}(n) Z …
To może być śmieszne pytanie, ale czy można mieć problem, który staje się łatwiejszy w miarę wzrostu wielkości nakładów? Wątpię, żeby jakieś praktyczne problemy były takie, ale może uda nam się wynaleźć zdegenerowany problem, który ma tę właściwość. Na przykład być może zaczyna się „rozwiązywać”, gdy robi się większy lub …
Próbuję napisać skrypt, który generuje losowe wykresy i muszę wiedzieć, czy krawędź na wykresie ważonym może mieć wartość 0. właściwie to ma sens, że 0 może być użyte jako waga krawędzi, ale pracowałem z wykresami w ciągu ostatnich kilku dni i nigdy nie widziałem takiego przykładu.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.