You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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