Znalazłem kilka algorytmów, które wyjaśniają, jak , jak znaleźć silnie połączone komponenty na grafice, ale żadne nie wyjaśniają, dlaczego chciałbyś to zrobić. Jakie są aplikacje silnie połączonych komponentów?Do czego są używane silnie połączone komponenty?
Odpowiedz
Powinieneś sprawdzić kurs Wprowadzenie do algorytmów Tima Roughgardena na Courserze. Dla każdego algorytmu, który podał, wyjaśnia niektóre jego zastosowania. Bardzo przydatne i sprawia, że można dostrzec wartość nauki algorytmów!
Używanie silnie połączonych komponentów, o których pamiętam, mówi, że można go użyć do znalezienia grup osób, które są bardziej powiązane w olbrzymim zbiorze danych. Pomyśl o Facebooku i o tym, jak polecają osoby, które mogą być Twoimi przyjaciółmi ...
Można to również wykorzystać do obejrzenia fragmentów populacji. Powiedz: "Wow, ten wielki komponent ma hobby chodzenia do tyłu i lubi jeść spleśniałą pizzę!", Może pokazać korelację. Reklamodawcy używający spleśniałej pizzy wykorzystają te dane do kierowania na osoby, które lubią chodzić do tyłu. Kto wie!
Jednym z przykładów jest w model checking:
Znalezienie mocno połączony komponentu odbywa się w wyraźnej model checking w formal verification.
W modelu kontroli - mamy maszynę do stanu, który reprezentuje model naszego oprogramowania/sprzętu, a my staramy się udowodnić temporal logic formuły na nim.
na przykład: Wzór EG(p)
sposobem: jest ścieżka na wykresie, gdzie dla każdego stanu - skład logicznego p
plonów true
.
Model algorithm for proving if EG(p) is true on a graph (model) to znajdowanie maksymalnych silnie połączonych komponentów (SCC), a następnie sprawdzanie ścieżek prowadzących do niego na wykresie.
Należy zauważyć, że sprawdzenie modelu jest szeroko stosowane w branży - szczególnie w celu udowodnienia poprawności komponentów sprzętowych.
(1) Znaczenie logiki temporalnej do informatyki jest wielki, a jej wynalazca Amir Pnueli otrzymał nagrodę Turinga za to!
- 1. Android - getTargetFragment i setTargetFragment - do czego są używane
- 2. Do czego są dostępne tytuły UIBarButtonItem?
- 3. Co to jest GLIBC? Do czego jest to używane?
- 4. C# .NET 3.5: Do czego używane jest wyrażenie <>?
- 5. Czym są kontrolowane komponenty i niekontrolowane komponenty w React?
- 6. Gdzie są używane konstruktory wirtualne?
- 7. do czego służy java.lang.reflect.Method.isBridge()?
- 8. Jakie soczewki są używane/przydatne dla?
- 9. ComboBoxes są połączone (i to jest złe)
- 10. Jak ustalić, czy dwa węzły są połączone?
- 11. Dlaczego komponenty altanowe są zainstalowane na wwwroot
- 12. Kątowe komponenty: wiązania są niezdefiniowane w kontrolerze
- 13. Czy silnie typowane funkcje są parametrami możliwymi w TypeScript?
- 14. określają, które pakiety są używane.
- 15. Czy komponenty są naprawdę szybsze w porównaniu do szablonów?
- 16. Opcje korzenia zasobów Vue nie są używane?
- 17. Do czego służy element iframe?
- 18. VB.NET Kolekcja silnie typowana
- 19. Dlaczego używane są anonimowe funkcje używane w strukturze kodu JavaScript?
- 20. do czego służy SDKDDKVer.h?
- 21. Czy komponenty internetowe mogą być używane do tworzenia niestandardowych elementów wejściowych?
- 22. Do czego służy dokument.implementation.createHTMLDocument?
- 23. Do czego przydatne są liczby całkowite o minimalnej szerokości?
- 24. Do czego służą wywołaniaInjectionMembers w wywołaniach RegisterType()?
- 25. Jakie są domyślne repozytoria używane przez SBT?
- 26. Jakie techniki są używane do debugowania złożonych wiązań guice?
- 27. Jakie są parametry używane do obliczania złożoności w narzędziu SourceMonitor?
- 28. Dlaczego wiodące zera są używane do reprezentowania liczb ósemkowych?
- 29. Jak często używane są układy Xilinx?
- 30. Parametry RegisterClientScriptBlock są używane w rzeczywistych scenariuszach?
Podobnie jak większość matematyki, jest to jedna z tych rzeczy, które wyglądają zupełnie bezużytecznie, dopóki ich nie potrzebujesz. – trutheality