Jestem zainteresowany złożonością asymptotyczną (duże O) operacji GroupBy na niezweryfikowanych zestawach danych. Jaka jest złożoność najbardziej znanego algorytmu i jaka jest złożoność algorytmów używanych przez serwery SQL i LINQ?Jaka jest asymptotyczna złożoność operacji GroupBy?
Odpowiedz
Zignorowanie podstawowego kodu SQL, nad którym pracuje grupa, gdy jest prezentowane samej operacji GROUP BY, złożoność jest po prostu O (n), ponieważ dane są skanowane w wierszu i agregowane w jednym przebiegu. Skala liniowo do n (rozmiar zbioru danych).
Po dodaniu grupy do złożonego zapytania równanie ulega zmianie, O (n) staje się górną granicą, którą grupa według dodaje do ogólnego równania; może być mniej, jeśli wewnętrzne zapytanie złożone jest takie, że w rozdzielczości podstawowego zapytania dane są już posortowane.
A ponieważ nie ma indeksu, kiedy dane są posortowane, już wydałeś O (N log N), sortując je. (nitpick: skaluje się liniowo do n, tj. do rozmiaru zbioru danych, a nie do rozmiaru n) –
@Martinho - Naprawiłem błąd składni angielskiej. – RichardTheKiwi
Przepraszam, ale to jest złe. Podczas iteracji przez zbiór danych musisz zdecydować, którą grupę chcesz umieścić w danym wierszu/obiekcie. Nie widzę, jak można dokonać selekcji grupowej w stałym czasie. –
O Linq, Chyba chcesz wiedzieć o złożoności Linq-to-object (Enumerable.GroupBy
).
Sprawdzając implementację za pomocą programu ILSpy, wydaje mi się, że jest to O (n). (.Net Framework 4 series.)
Wylicza kolekcję źródłową jeden raz. Dla każdego elementu oblicza swój klucz grupujący. Następnie sprawdza, czy ma już klucz w mapowaniu hashtable na listy elementów, dodając klucz do tablicy, jeśli jej nie ma. Następnie dodaje element do odpowiedniej listy wpisów w hashtable.
- 1. Złożoność czasowa operacji zestawu Pythona?
- 2. Jaka jest złożoność czasu przeglądarek HTML DOM
- 3. Jaka jest złożoność tego kodu manipulacji ciągami?
- 4. Jaka jest złożoność złożonych lin zrównoważonych?
- 5. Jaka jest złożoność czasowa inicjowania macierzy?
- 6. Jaka jest złożoność czasu HashMap.containsKey() w java?
- 7. Jaka jest najgorsza złożoność sortowania kubełków?
- 8. Jaka jest złożoność czasu HashMap.containsValue() w java?
- 9. Jaka jest złożoność set_intersection w C++?
- 10. Jaka jest złożoność Morris Traversal o (n)?
- 11. Jaka jest najlepsza złożoność zagadek N-Queens?
- 12. Obliczeniowa złożoność operacji TreeSet w Javie?
- 13. Duża złożoność O podstawowych operacji arytmetycznych
- 14. Jaka jest złożoność czasu dodawania elementu na początku tablicy ArrayList?
- 15. Jaka jest złożoność czasu A * i jak jest uzyskiwana?
- 16. Jaka jest złożoność czasu funkcji liczenia w clojure?
- 17. Jaka jest złożoność czasu przejścia drzew przy użyciu plonu?
- 18. Jaka jest złożoność czasu w dict.keys() w Pythonie?
- 19. jaka jest złożoność czasu metody Array # uniq w ruby?
- 20. Jaka jest złożoność pamięci std :: sort() i std :: sort_heap()?
- 21. Asymptotyczna złożoność czasowa wstawiania n elementów do binarnych stert zawierających już elementy n
- 22. Jaka jest różnica między operatorami kostki, rollupu i groupBy?
- 23. Złożoność czasowa tabeli mieszania
- 24. Złożoność czasu dla java ArrayList
- 25. Czym jest złożoność OrderedDictionary?
- 26. Jaka jest złożoność czasowa indeksowania, wstawiania i usuwania z typowych struktur danych?
- 27. `złożoność złożoności
- 28. Czym jest złożoność dodawania macierzy?
- 29. Haskell jest odpowiednikiem Scala's groupBy
- 30. Dlaczego groupby jest tak szybki?
Należy pamiętać, że GroupBy w SQL i LINQ to dwie bardzo różne operacje. –