diff --git a/matma2nowy.ipynb b/matma2nowy.ipynb new file mode 100644 index 0000000..16bba02 --- /dev/null +++ b/matma2nowy.ipynb @@ -0,0 +1,121 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Spacery losowe po grafach: algorytm wyszukiwania klastrów\n", + "


\n", + "Spacery losowe\n", + "\n", + "Graf G = (V, E) składa się ze\n", + "zbioru wierzchołków V oraz zbioru krawędzi E, gdzie E zbiorem nieuporządkowanych par\n", + "wierzchołków:\n", + "\n", + "$E ⊂\\{(x, y) : x, y ∈ V, x ≠ y\\} $\n", + "\n", + "Je»eli (x, y) ∈ E, to wierzchołki x, y nazywamy sąsiadami i oznaczamy x ∼ y. Stopniem\n", + "wierzchołka x ∈ V nazywamy liczbę jego sąsiadów i oznaczamy deg(x).\n", + "Na danym grafie G = (V, E) definiujemy prosty spacer losowy. Jest to łańcuch Markowa\n", + "na przestrzeni stanów V z macierzą przejścia\n", + "\n", + "$P(x, y) = \\frac{1}{deg(x)}$ jeżeli y ∼ x\n", + "\n", + "$P(x, y) = 0$ w przeciwnym razie\n", + "\n", + "\n", + "Gdy łańcuch znajduje się w wierzchołku x, to wybiera losowo (jednostajnie) jednego z jego\n", + "sąsiadów i przechodzi do niego.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Łancuch markova\n", + "


\n", + "Proces Markowa – ciąg zdarzeń, w którym prawdopodobieństwo każdego zdarzenia zależy jedynie od wyniku poprzedniego. W ujęciu matematycznym, procesy Markowa to takie procesy stochastyczne, które spełniają własność Markowa.\n", + "\n", + "$P(X_{n+1} = x|X_{n}=x_n,\\ldots X_{1}=x_{1}) = P(X_{n+1}=x | X_{n}=x_n)$\n", + "\n", + "Oznacza to, że zmienna w ciągu \n", + "X\n", + "n\n", + " ''pamięta'' tylko swój stan z poprzedniego kroku i wyłącznie od niego zależy." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podgrafy silnie ze sobą powiązane\n", + "\n", + "Najprościej będzie to zaobserować na przykładzie:\n", + "\n", + "![](https://i.imgur.com/QrHGsgF.png)\n", + "\n", + "![](https://i.imgur.com/vqnrftV.png)\n", + "\n", + "Jak widać a powyższym obrazku silnie ze sobą powiążane podgrafy to po prostu podgrafy których wierzchołki posiadają między sobą znacznie więcej krawędzi niż z pozostałymi wierzchołkami grafu, trochę inaczej wygląd asytuacja z grafami skierowanymi, w przypadku grafów skierowanych, podgraf silnie powiązany to podgraf z którym z każdego wierzchołka można osiągnąć inny wierzchołek, jak na poniższym obrazku\n", + "\n", + "![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Scc-1.svg/712px-Scc-1.svg.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wierzchołki krytyczne rozspójniające graf\n", + "\n", + "Graf spójny - graf w którym dowolne dwa wierzchołki łączy pewna ścieżka\n", + "\n", + "![](https://i.imgur.com/pCLbkwz.png)\n", + "\n", + "Wierzchołkiem krytycznym powyższego grafu jest wierzchołek numer 4, usunięcie go spowoduje odłączenie wierzchołka numer 6 od reszty grafu.\n", + "\n", + "Więc wierzchołek krytyczny to taki którego usunięcie sprawi że graf przestaje być grafem spójnym\n", + "Niektóre grafy nie posiadają wierzchołków krytycznych są ta np\n", + "\n", + "cykle:\n", + "\n", + "\n", + "![](https://www.researchgate.net/publication/341354100/figure/fig1/AS:890737768026113@1589379841098/Strong-3-rainbow-colorings-of-C3-C4-C5-C6-and-C8.png)\n", + "\n", + "grafy pełne:\n", + "\n", + "![](https://i.imgur.com/BtJKeyz.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Zastosowanie spacerów losowych w klastrowaniu grafów.\n", + "
\n", + "
\n", + "
\n", + "Spacery losowe na grafach nadają się do klastrowania ponieważ istnieje znacznie większeprawdopodobieństwo że poruszając się losowo zostaniemy w obrębie danego klastru. klastry są wewnątrz gęste a wyjścia z klastru są rzadkie. Do klastrowania można wykorzystać algorytm MCL(Markov Cluster Algorithm)\n", + "1) Obliczamy dla każdej pary wezłów u i v prawdopodobieństwo rozpoczęcia od węzła u i zakończenia w węźle v po przejściu k kroków.\n", + "2) Otrzymaną macierz normalizujemy do wartości z przedziału 0-1\n", + "3) Mnożymy macierz k razy przez siebie\n", + "4) Wzmacniamy obserwacje z punktu 3 stosując inflacje z parametrem r ma to wpływ na ziarnistość klastrów\n", + "\n", + "![](https://i.imgur.com/76ocnf5.png)\n", + "\n", + "5) Kroki 3 i 4 powtarzamy do momeentu gdy sumy w kolumnach będą równe\n", + "6) Z otrzymanej macierzy odczytujemy klastry np:\n", + "{1}, {3}, {2,4}\n", + "\n", + "![](https://i.imgur.com/ryF4FUu.png)\n" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}