first update

This commit is contained in:
AdamOsiowy123 2022-06-21 13:37:34 +02:00
parent ae6e74f2c2
commit 72da71900e
8 changed files with 121 additions and 131 deletions

BIN
images/cykle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/random_walk_1d_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
images/random_walk_1d_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/random_walk_1d_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/random_walk_1d_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/random_walk_2d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -1,82 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Spacery losowe po grafach: algorytm wyszukiwania klastrów</b>\n",
"<br><br><br>\n",
"<b>Spacery losowe</b>\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": [
"<b>Łancuch markova</b>\n",
"<br><br><br>\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": [
"<b>Podgrafy silnie ze sobą powiązane</b>\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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Wierzchołki krytyczne rozspójniające graf</b>\n",
"\n",
"Graf spójny - graf w który 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"
]
}
],
"metadata": {
"language_info": {
"name": "python"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -2,20 +2,102 @@
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"<b>Spacery losowe po grafach: algorytm wyszukiwania klastrów</b>\n",
"<br><br><br>\n",
"<b>Spacery losowe</b>\n",
"## Spacery losowe po grafach: algorytm wyszukiwania klastrów\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",
"### Spacery losowe\n",
"\n",
"$E ⊂\\{(x, y) : x, y ∈ V, x ≠ y\\} $\n",
"Spacer losowy można zdefiniować jako serię dyskretnych kroków wykonywanych przez obiekt w pewnym kierunku. Co więcej, kierunek i ruch obiektu w każdym kroku określamy probabilistycznie.\n",
"\n",
"Je»eli (x, y) ∈ E, to wierzchołki x, y nazywamy sąsiadami i oznaczamy x y. Stopniem\n",
"W spacerze losowym przyszłe położenie obiektu jest całkowicie niezależne od bieżącego położenia. Ponadto jest to przykład procesu Markowa. Zaczynając od pewnej pozycji, obiekt może iść w dowolnym kierunku. Każdy krok wykonany przez obiekt w dowolnym kierunku ma przypisane prawdopodobieństwo, dlatego końcowe położenie jest całkowicie niezależne od punktu początkowego.\n",
"\n",
"#### Przykład jednowymiarowego spaceru losowego zaczynającego się w punkcie 0, po osi liczb całkowitych:\n",
"![r_w_1d_1](./images/random_walk_1d_1.png)\n",
"Obiekt w każdym kroku może poruszać się z równym prawdopodobieństwem w dwóch kierunkach: lewo lub prawo.\n",
"W pierwszym kroku prawdopodobieństwo że obiekt znajdzie się w pozycji -1 lub 1 wynosi 1/2.\n",
"![r_w_1d_2](./images/random_walk_1d_2.png)\n",
"W drugim kroku obiekt może znaleźć się na pozycjach -2, 0 i 2. Prawdopodobieństwo że obiekt znajdzie się w położeniu -2 lub 2 jest równe i wynosi 1/4,\n",
"do punktu 0 obiekt może dotrzeć z punktów -1 i 1 to znaczy że prawdopowdopodobieństwa należy zsumować i wtedy 1/4 + 1/4 = 1/2.\n",
"![r_w_1d_3](./images/random_walk_1d_3.png)\n",
"W trzecim kroku obiekt może znaleźć się w pozycjach -3, -1, 1, 3. Prawdopodobieństwo że obiekt znajdzie się w pozycji 3 lub -3 jest równe 3/8, a pozycjach 1 lub -1 jest równe 1/8.\n",
"![r_w_1d_4](./images/random_walk_1d_4.png)\n",
"Łatwo zauważyć, że gdy liczba wykonanych kroków jest nieparzysta, to wszystkich możliwych pozycji w jakich może znależć się obiekt również jest nieparzysta liczba. Podobnie w przypadku parzystej liczby wykonanych kroków, ilość możliwych pozycji jest parzysta.\n",
"\n",
"#### Dwuwymiarowy spacer losowy\n",
"![r_w_2d](./images/random_walk_2d.png)\n"
]
},
{
"cell_type": "markdown",
"source": [
"### Grafy\n",
"\n",
"Grafem nazywamy uporządkowaną kolekcję dwóch zbiorów: zbioru wierzchołków *V* oraz zbioru krawędzi *E*. Zbiór wierzchołków jest dowolnej postaci. Elementami zbioru krawędzi są *e* ∈ *E*, które są podzbiorami postaci {v<sub>1</sub>, v<sub>2</sub>} dla pewnych dwóch wierzchołków v<sub>1</sub>, v<sub>2</sub> ∈ *V* (jeśli graf jest nieskierowany) lub parą uporządkowaną (v<sub>1</sub>, v<sub>2</sub>) jeśli graf jest skierowany.\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",
"\n",
"#### Podgrafy\n",
"Podgraf danego grafu G to graf powstały przez usunięcie z grafu G pewnej liczby wierzchołków lub krawędzi (z tym zastrzeżeniem, że usuwając pewien wierzchołek usuwamy wszystkie przyległe do niego krawędzie).\n",
"W szczególności każdy graf jest swoim podgrafem.\n",
"\n",
"#### Graf spójny\n",
"Graf spójny graf, w którym każdą parę wierzchołków łączy pewna ścieżka. Graf nieposiadający powyższej własności to graf niespójny.\n",
"\n",
"Warunkiem koniecznym, by graf skierowany był spójny, jest spójność jego grafu podstawowego (tego samego grafu bez kierunków na krawędziach).\n",
"\n",
"#### Wierzchołki krytyczne rozspójniające graf\n",
"\n",
"Wierzchołek krytyczny to taki którego usunięcie sprawi że graf przestaje być grafem spójnym\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",
"Niektóre grafy nie posiadają wierzchołków krytycznych są to na przyklad:\n",
"\n",
"- grafy posiadające cykle (czyli zamkniętą ścieżkę z takim samym ostatnim i pierwszym wierzchołkiem):\n",
"\n",
"![](./images/cykle.png)\n",
"\n",
"- grafy pełne (grafy w których dla każdej pary węzłów istnieje krawędź je łącząca):\n",
"\n",
"![](https://i.imgur.com/BtJKeyz.png)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"### Klastry\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Łancuch markova\n",
"\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",
@ -25,15 +107,13 @@
"\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": [
"<b>Łancuch markova</b>\n",
"<br><br><br>\n",
"sąsiadów i przechodzi do niego.\n",
"\n",
"Spacery losowe są podstawą algorytmu MCL.\n",
" Poruszając się losowo od węzła do węzła, istnieje większe prawdopodobieństwo poruszania się wewnątrz klastru, niż przecinania klastrów. Dzieje się tak, ponieważ z definicji klastry są wewnętrznie gęste, a są oddzielone rzadkimi regionami. W grupowaniu grafów gęstość i rzadkość definiuje się jako proporcję szczelin krawędziowych, które mają w sobie krawędzie.\n",
" Przeprowadzając spacery losowe, mamy większą szansę na znalezienie trendu gromadzenia się wierzchołków i definicji klastrów w grafie.\n",
" Spacery losowe w grafie są obliczane za pomocą łańcuchów Markowa.\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",
@ -46,9 +126,13 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"<b>Podgrafy silnie ze sobą powiązane</b>\n",
"### Podgrafy silnie ze sobą powiązane\n",
"\n",
"Najprościej będzie to zaobserować na przykładzie:\n",
"\n",
@ -56,44 +140,32 @@
"\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",
"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.\n",
"\n",
"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": [
"<b>Wierzchołki krytyczne rozspójniające graf</b>\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)"
]
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"<b> Zastosowanie spacerów losowych w klastrowaniu grafów.</b>\n",
"<br>\n",
"<br>\n",
"<br>\n",
"### Zastosowanie spacerów losowych w klastrowaniu grafów.\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",
@ -118,4 +190,4 @@
},
"nbformat": 4,
"nbformat_minor": 2
}
}