25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

06_graphes.html 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
  3. <head>
  4. <title>Graphes</title>
  5. <meta charset="utf-8" />
  6. <meta name="author" content="Maxime Wack" />
  7. <link href="libs/remark-css-0.0.1/default.css" rel="stylesheet" />
  8. <link rel="stylesheet" href="css/my_style.css" type="text/css" />
  9. </head>
  10. <body>
  11. <textarea id="source">
  12. class: center, middle, title
  13. # UE Visualisation
  14. ### 2019-2020
  15. ## Dr. Maxime Wack
  16. ### AHU Informatique médicale
  17. #### Hôpital Européen Georges Pompidou, &lt;/br&gt; Université de Paris
  18. ---
  19. class: center, middle
  20. # Objectif
  21. ## Théorie des graphes
  22. ## Créer et manipuler des graphes
  23. ## Représenter des graphes
  24. ---
  25. # Théorie des graphes
  26. ### Étude des graphes et leurs applications
  27. ### Topologie des graphes
  28. ### Propriétés des graphes
  29. ### Développement d'algorithmes
  30. - parcours en largeur/profondeur
  31. - calcul de trajet (A*, Dijkstra)
  32. - détection de sous-graphes
  33. - inférence, effets de réseaux
  34. - résolution de contraintes
  35. ---
  36. # Graphes
  37. .pull-left[
  38. ## Graphes ou réseaux
  39. *graphs* and *networks*
  40. ## Représentation de **relations** entre des **éléments**
  41. ]
  42. .pull-right[
  43. ![](06_img/graphe.png)
  44. ]
  45. ---
  46. # Sommets
  47. .pull-left[
  48. ### (ou nœuds, ou points)&lt;/br&gt; *vertex (vertices)* en anglais
  49. ### Servent à représenter les **éléments**
  50. ### Peuvent posséder des **attributs** arbitraires (label, valeurs, etc.)
  51. ### Des attributs peuvent être **calculés** (degré, centralité, etc.)
  52. ]
  53. .pull-right[
  54. ![](06_img/vertices.png)
  55. ]
  56. ---
  57. # Arêtes
  58. .pull-left[
  59. ### (ou liens, ou lignes)&lt;/br&gt; *edges* en anglais
  60. ### Servent à représenter les **relations**
  61. ### Peuvent également posséder des **attributs** (label, poids, etc.)
  62. ]
  63. .pull-right[
  64. ![](06_img/edges.png)
  65. ]
  66. ---
  67. # Graphe dirigé
  68. .pull-left[
  69. ### Graphe dont les arêtes ont une **direction**
  70. ### Arêtes **bidirectionnelles** possibles
  71. ]
  72. .pull-right[
  73. ![](06_img/directed.png)
  74. ]
  75. ---
  76. # Cycles
  77. .pull-left[
  78. ### Groupes de sommets formant un **anneau**
  79. ### Dans un graphe dirigé, on doit pouvoir tourner
  80. ]
  81. .pull-right[
  82. ![](06_img/cycle.png)
  83. ]
  84. ---
  85. # Clique
  86. .pull-left[
  87. ### Ensemble de sommets **tous connectés entre eux**
  88. ]
  89. .pull-right[
  90. ![](06_img/clique.png)
  91. ]
  92. ---
  93. # Graphe connecté
  94. .pull-left[
  95. ### Graphe dont **tous les sommets** forment une **clique**
  96. ]
  97. .pull-right[
  98. ![](06_img/connected.png)
  99. ]
  100. ---
  101. # Arbre
  102. .pull-left[
  103. ### Graphe ne comportant **pas de cycle**
  104. ### Possède une ou plusieurs **racines**
  105. ]
  106. .pull-right[
  107. ![](06_img/tree.png)
  108. ]
  109. ---
  110. # Graphe dirigé acyclique
  111. .pull-left[
  112. ### Depuis le graphe dirigé précédent
  113. ### Quelles arêtes supprimer pour obtenir un DAG ?
  114. ]
  115. .pull-right[
  116. ![](06_img/directed.png)
  117. ]
  118. ---
  119. # Graphe dirigé acyclique
  120. .pull-left[
  121. ### **DAG** (Directed Acyclic Graph)
  122. ### Structure très reconnue
  123. - Réseaux bayésiens
  124. - Arbres généalogiques
  125. - Systèmes de contrôle de version
  126. - Systèmes de workflow
  127. - Graphe de citations
  128. ]
  129. .pull-right[
  130. ![](06_img/DAG.png)
  131. ]
  132. ---
  133. # Représentation numérique
  134. .pull-left[
  135. ![](06_img/numbered.png)
  136. ]
  137. .pull-right[
  138. ## Liste de sommets
  139. `(1, 2, 3, 4, 5, 6, 7, 8)`
  140. ## Liste d'arêtes
  141. `((2, 1), (3, 1), (4, 1),`&lt;/br&gt;
  142. ` (2, 3), (4, 3), (4, 2),`&lt;/br&gt;
  143. ` (2, 5), (5, 2), (5, 7),`&lt;/br&gt;
  144. ` (6, 5), (6, 7), (7, 4),`&lt;/br&gt;
  145. ` (7, 8))`
  146. ]
  147. ---
  148. # Représentation numérique
  149. .pull-left[
  150. ![](06_img/numbered.png)
  151. ]
  152. ## Matrice d'adjacence
  153. ```
  154. ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
  155. ## [1,] 0 0 0 0 0 0 0 0
  156. ## [2,] 1 0 1 0 1 0 0 0
  157. ## [3,] 1 0 0 0 0 0 0 0
  158. ## [4,] 1 1 1 0 0 0 0 0
  159. ## [5,] 0 1 0 0 0 0 1 0
  160. ## [6,] 0 0 0 0 1 0 1 0
  161. ## [7,] 0 0 0 1 0 0 0 1
  162. ## [8,] 0 0 0 0 0 0 0 0
  163. ```
  164. ---
  165. class: center
  166. # Visualisation
  167. ## Cytoscape
  168. ## yEd
  169. ## ggraph
  170. ---
  171. # Outils externes
  172. ## Cytoscape
  173. https://cytoscape.org/
  174. Pour l'analyse de réseaux, orienté biologie à l'origine&lt;/br&gt;
  175. Visualisation de réseaux&lt;/br&gt;
  176. Calculs d'indicateurs&lt;/br&gt;
  177. Mapping d'attributs sur des propriété esthétiques
  178. ## yEd
  179. https://www.yworks.com/products/yed
  180. Éditeur de graphes, multiples supportés&lt;/br&gt;
  181. Visualisation de réseaux&lt;/br&gt;
  182. Nombreux algorithmes de layout&lt;/br&gt;
  183. Calculs d'indicateurs&lt;/br&gt;
  184. Mapping d'attributs sur des propriété esthétiques&lt;/br&gt;
  185. ---
  186. # ggraph
  187. https://ggraph.data-imaginist.com/
  188. ### `geom_node_*` → geom pour les sommets
  189. ### `geom_edge_*` → geom pour les arêtes
  190. ### Propriété `layout` dans `ggraph()`
  191. </textarea>
  192. <style data-target="print-only">@media screen {.remark-slide-container{display:block;}.remark-slide-scaler{box-shadow:none;}}</style>
  193. <script src="https://remarkjs.com/downloads/remark-latest.min.js"></script>
  194. <script src="addons/macros.js"></script>
  195. <script>var slideshow = remark.create({
  196. "ratio": "4:3",
  197. "countIncrementalSlides": false,
  198. "self-contained": true
  199. });
  200. if (window.HTMLWidgets) slideshow.on('afterShowSlide', function (slide) {
  201. window.dispatchEvent(new Event('resize'));
  202. });
  203. (function(d) {
  204. var s = d.createElement("style"), r = d.querySelector(".remark-slide-scaler");
  205. if (!r) return;
  206. s.type = "text/css"; s.innerHTML = "@page {size: " + r.style.width + " " + r.style.height +"; }";
  207. d.head.appendChild(s);
  208. })(document);
  209. (function(d) {
  210. var el = d.getElementsByClassName("remark-slides-area");
  211. if (!el) return;
  212. var slide, slides = slideshow.getSlides(), els = el[0].children;
  213. for (var i = 1; i < slides.length; i++) {
  214. slide = slides[i];
  215. if (slide.properties.continued === "true" || slide.properties.count === "false") {
  216. els[i - 1].className += ' has-continuation';
  217. }
  218. }
  219. var s = d.createElement("style");
  220. s.type = "text/css"; s.innerHTML = "@media print { .has-continuation { display: none; } }";
  221. d.head.appendChild(s);
  222. })(document);
  223. // delete the temporary CSS (for displaying all slides initially) when the user
  224. // starts to view slides
  225. (function() {
  226. var deleted = false;
  227. slideshow.on('beforeShowSlide', function(slide) {
  228. if (deleted) return;
  229. var sheets = document.styleSheets, node;
  230. for (var i = 0; i < sheets.length; i++) {
  231. node = sheets[i].ownerNode;
  232. if (node.dataset["target"] !== "print-only") continue;
  233. node.parentNode.removeChild(node);
  234. }
  235. deleted = true;
  236. });
  237. })();</script>
  238. <script>
  239. (function() {
  240. var links = document.getElementsByTagName('a');
  241. for (var i = 0; i < links.length; i++) {
  242. if (/^(https?:)?\/\//.test(links[i].getAttribute('href'))) {
  243. links[i].target = '_blank';
  244. }
  245. }
  246. })();
  247. </script>
  248. <script>
  249. slideshow._releaseMath = function(el) {
  250. var i, text, code, codes = el.getElementsByTagName('code');
  251. for (i = 0; i < codes.length;) {
  252. code = codes[i];
  253. if (code.parentNode.tagName !== 'PRE' && code.childElementCount === 0) {
  254. text = code.textContent;
  255. if (/^\\\((.|\s)+\\\)$/.test(text) || /^\\\[(.|\s)+\\\]$/.test(text) ||
  256. /^\$\$(.|\s)+\$\$$/.test(text) ||
  257. /^\\begin\{([^}]+)\}(.|\s)+\\end\{[^}]+\}$/.test(text)) {
  258. code.outerHTML = code.innerHTML; // remove <code></code>
  259. continue;
  260. }
  261. }
  262. i++;
  263. }
  264. };
  265. slideshow._releaseMath(document);
  266. </script>
  267. <!-- dynamically load mathjax for compatibility with self-contained -->
  268. <script>
  269. (function () {
  270. var script = document.createElement('script');
  271. script.type = 'text/javascript';
  272. script.src = 'https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML';
  273. if (location.protocol !== 'file:' && /^https?:/.test(script.src))
  274. script.src = script.src.replace(/^https?:/, '');
  275. document.getElementsByTagName('head')[0].appendChild(script);
  276. })();
  277. </script>
  278. </body>
  279. </html>