|
@@ -855,67 +855,63 @@ If you need more detail on this subject, see "Sorting" section in [Additional De
|
|
|
|
|
|
## Graphs
|
|
## Graphs
|
|
|
|
|
|
-Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
|
|
|
|
-
|
|
|
|
-- Notes from Yegge:
|
|
|
|
- - There are three basic ways to represent a graph in memory:
|
|
|
|
- - objects and pointers
|
|
|
|
- - matrix
|
|
|
|
- - adjacency list
|
|
|
|
- - Familiarize yourself with each representation and its pros & cons
|
|
|
|
- - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code
|
|
|
|
- - When asked a question, look for a graph-based solution first, then move on if none.
|
|
|
|
-
|
|
|
|
-- [ ] Skiena Lectures - great intro:
|
|
|
|
- - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11)
|
|
|
|
|
|
+Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu komputer, jadi bagian ini panjang, seperti pohon dan penyortiran.
|
|
|
|
+
|
|
|
|
+- Catatan:
|
|
|
|
+ - Ada 4 cara dasar untuk merepresentasikan Graf dalam memori:
|
|
|
|
+ - objek dan pointer
|
|
|
|
+ - matriks kedekatan (adjacency matrix)
|
|
|
|
+ - daftar kedekatan (adjacency list)
|
|
|
|
+ - peta kedekatan (adjacency map)
|
|
|
|
+ - Biasakan diri Anda dengan setiap representasi beserta pro & kontranya
|
|
|
|
+ - BFS dan DFS - mengetahui kompleksitas komputasi mereka, trade off mereka, dan bagaimana menerapkannya dalam kode nyata
|
|
|
|
+ - Saat ditanya pertanyaan, cari solusi berbasis Graf terlebih dahulu, lalu lanjutkan jika tidak ada
|
|
|
|
+
|
|
|
|
+- [ ] MIT (video):
|
|
|
|
+ - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13)
|
|
|
|
+ - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14)
|
|
|
|
+
|
|
|
|
+- [ ] Kuliah Skiena - pengantar yang bagus:
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 11 - Graphs Struktur Data (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11)
|
|
- [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12)
|
|
- [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12)
|
|
- - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13)
|
|
|
|
- - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
- - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
- - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 13 - Algoritma Graph (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13)
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 14 - Algoritma Graph (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 15 - Algoritma Graph (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 16 - Algoritma Graph (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
|
|
-- [ ] Graphs (review and more):
|
|
|
|
|
|
+- [ ] Graphs (ulasan dan lainnya):
|
|
|
|
|
|
- - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
|
|
+ - [ ] [6.006 Masalah Jalur Terpendek Sumber Tunggal (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
- [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
- [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
- [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17)
|
|
- [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17)
|
|
- - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18)
|
|
|
|
- - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
- - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7)
|
|
|
|
- - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8)
|
|
|
|
- - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9)
|
|
|
|
- - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)
|
|
|
|
- - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19)
|
|
|
|
- - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
|
- - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw)
|
|
|
|
-
|
|
|
|
-- Full Coursera Course:
|
|
|
|
- - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
|
|
|
|
-
|
|
|
|
-- Yegge: If you get a chance, try to study up on fancier algorithms:
|
|
|
|
- - [ ] Dijkstra's algorithm - see above - 6.006
|
|
|
|
- - [ ] A*
|
|
|
|
- - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
|
|
|
|
- - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
|
|
|
|
- - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
|
|
|
|
-
|
|
|
|
-- I'll implement:
|
|
|
|
- - [ ] DFS with adjacency list (recursive)
|
|
|
|
- - [ ] DFS with adjacency list (iterative with stack)
|
|
|
|
- - [ ] DFS with adjacency matrix (recursive)
|
|
|
|
- - [ ] DFS with adjacency matrix (iterative with stack)
|
|
|
|
- - [ ] BFS with adjacency list
|
|
|
|
- - [ ] BFS with adjacency matrix
|
|
|
|
- - [ ] single-source shortest path (Dijkstra)
|
|
|
|
- - [ ] minimum spanning tree
|
|
|
|
- - DFS-based algorithms (see Aduni videos above):
|
|
|
|
- - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting)
|
|
|
|
- - [ ] topological sort
|
|
|
|
- - [ ] count connected components in a graph
|
|
|
|
- - [ ] list strongly connected components
|
|
|
|
- - [ ] check for bipartite graph
|
|
|
|
-
|
|
|
|
-You'll get more graph practice in Skiena's book (see Books section below) and the interview books
|
|
|
|
|
|
+ - [ ] [6.006 Mempercepat Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18)
|
|
|
|
+ - [ ] [Aduni: Algoritma Graphs I - Sortasi Topologi, Pohon Rentang Minimum, Algoritma Prim - Kuliah 6 (video)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
+ - [ ] [Aduni: Algoritma Graphs II - DFS, BFS, Algoritma Kruskal, Struktur Data Union Find - Kuliah 7 (video)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7)
|
|
|
|
+ - [ ] [Aduni: Algoritma Graphs III: Jalur Terpendek - Kuliah 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8)
|
|
|
|
+ - [ ] [Aduni: Algoritma Graphs IV: Pengantar algoritma geometris - Kuliah 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9)
|
|
|
|
+ - [ ] ~~[CS 61B 2014 (mulai dari 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~
|
|
|
|
+ - [ ] [CS 61B 2014: Graphs berbobot (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k)
|
|
|
|
+ - [ ] [Algoritma Serakah: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
|
+ - [ ] [Komponen yang Sangat Terhubung Algoritma Graphs Algoritma Kosaraju (video)](https://www.youtube.com/watch?v=RpgcYiky7uw)
|
|
|
|
+
|
|
|
|
+- Kursus Coursera Penuh:
|
|
|
|
+ - [ ] [Algoritma pada Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
|
|
|
|
+
|
|
|
|
+- Saya akan menerapkan:
|
|
|
|
+ - [ ] DFS dengan daftar kedekatan (rekursif)
|
|
|
|
+ - [ ] DFS dengan daftar adjacency (iteratif dengan stack)
|
|
|
|
+ - [ ] DFS dengan matriks adjacency (rekursif)
|
|
|
|
+ - [ ] DFS dengan matriks adjacency (iteratif dengan stack)
|
|
|
|
+ - [ ] BFS dengan daftar kedekatan
|
|
|
|
+ - [ ] BFS dengan matriks adjacency
|
|
|
|
+ - [ ] jalur terpendek sumber tunggal (Dijkstra)
|
|
|
|
+ - [ ] pohon rentang minimum
|
|
|
|
+ - Algoritme berbasis DFS (lihat video Aduni di atas):
|
|
|
|
+ - [ ] periksa siklus (diperlukan untuk pengurutan topologi, karena kami akan memeriksa siklus sebelum memulai)
|
|
|
|
+ - [ ] sortir topologi
|
|
|
|
+ - [ ] menghitung komponen yang terhubung dalam graf
|
|
|
|
+ - [ ] daftar komponen yang sangat terhubung
|
|
|
|
+ - [ ] periksa graf bipartit
|
|
|
|
|
|
## Bahkan Lebih Banyak Pengetahuan
|
|
## Bahkan Lebih Banyak Pengetahuan
|
|
|
|
|
|
@@ -1195,7 +1191,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
- [ ] [Arsitektur Web yang Skalabel dan Sistem Terdistribusi](http://www.aosabook.org/en/distsys.html)
|
|
- [ ] [Arsitektur Web yang Skalabel dan Sistem Terdistribusi](http://www.aosabook.org/en/distsys.html)
|
|
- [ ] [Kekeliruan Komputasi Terdistribusi Dijelaskan](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf)
|
|
- [ ] [Kekeliruan Komputasi Terdistribusi Dijelaskan](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf)
|
|
- [ ] [Teknik Pemrograman Pragmatis](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html)
|
|
- [ ] [Teknik Pemrograman Pragmatis](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html)
|
|
- - [ekstra: Pemrosesan Grafik Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html)
|
|
|
|
|
|
+ - [ekstra: Pemrosesan Graph Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html)
|
|
- [ ] [Jeff Dean - Membangun Sistem Perangkat Lunak di Google dan Pelajaran yang Dipetik (video)](https://www.youtube.com/watch?v=modXC5IWTJI)
|
|
- [ ] [Jeff Dean - Membangun Sistem Perangkat Lunak di Google dan Pelajaran yang Dipetik (video)](https://www.youtube.com/watch?v=modXC5IWTJI)
|
|
- [ ] [Pengantar Sistem Arsitek untuk Skala](http://lethain.com/introduction-to-architecting-systems-for-scale/)
|
|
- [ ] [Pengantar Sistem Arsitek untuk Skala](http://lethain.com/introduction-to-architecting-systems-for-scale/)
|
|
- [ ] [Menskalakan game seluler ke audiens global menggunakan App Engine dan Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc)
|
|
- [ ] [Menskalakan game seluler ke audiens global menggunakan App Engine dan Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc)
|