The Rique-Number of Graphs
18:42
Жыл бұрын
Graph Drawing Contest Report 2022
32:07
Пікірлер
@RedStainedInk
@RedStainedInk 22 күн бұрын
The comments repeat themselves, but: What a great explanation! Hammers everything important into the brain in no time!
@sandrocksd9565
@sandrocksd9565 25 күн бұрын
1:11:45 “Wer den Schal vor der Unterhose anzieht hat die Kontrolle über sein Leben verloren” 😂 made my Vorlesung
@djin8767
@djin8767 Ай бұрын
Beim one sided crossing minimization problem beim ILP das ganze was minimiert werden soll du sagst das die kreuzungen zählt aber zählt nicht nur der rechte part zu dem du gesagt hast er sei konstant die crossings ? Bzw. was macht der linke part und was der rechte?
@PhilippKindermann
@PhilippKindermann 22 күн бұрын
Der linke + rechte Part ergeben zusammen die Anzahl der Crossings. Wir machen da eine Umfornung: Die Anzahl der Crossings ist: [Summe über c_ij x_ij + c_ji x_ji]. Wegen x_ji = 1 - x_ij folgt: [Summe über [c_ij x_ij + c_ji (1 - x_ij)] = [Summe über c_ij x_ij + c_ji - c_ji x_ji] = [Summe über (c_ij - c_ji) x_ij + c_ji] = [Summe über (c_ij - c_ji) x_ij] + [Summe über c_ji]. Der rechte Teil [Summe über c_ji] ist konstant, also zählen wir im ILP nur den linken Teil. Um dann am Ende die exakte Anzahl der Kreuzungen zu bekommen, muss man noch [Summe über c_ji] draufaddieren. Alternativ kann man [Summe über c_ji] auch vorberechnen und in der Zielfunktion des ILPs draufaddieren.
@sergiocalad
@sergiocalad Ай бұрын
Excelent explanation. Can you explain Vatti's algorithm?
@cezeryerak
@cezeryerak Ай бұрын
You are great! I remember the Computational Geometry and Optimization lectures I got for three semesters. Maybe your professors were mine as well :D
@TrippleXD545
@TrippleXD545 2 ай бұрын
bro that last name is great
@benjaminlehmann
@benjaminlehmann 2 ай бұрын
Minor correction for views: 2m12s meant to say - "at every face, there should be at *least* 3 edges." As stated on earlier slide.
@PhilippKindermann
@PhilippKindermann Ай бұрын
You're right, thank you!
@28ikenna1
@28ikenna1 2 ай бұрын
When following the iterative heuristic, how are you accomplishing edge straightening? Are you using the quadratic program mention earlier? I assumed the heuristic was to avoid the using the quadratic program. Loved the video series!
@PhilippKindermann
@PhilippKindermann Ай бұрын
No, this step is much simpler (and thus not optimal): similar to the crossing minimization, you just go through the layers bottom-up, then top-down, and so on. For each layer, you look at the dummy vertices and see if you can move them to remove bends. You do that until there are no more local improvements you can do.
@benjaminlehmann
@benjaminlehmann 2 ай бұрын
So excited to find these videos! Thank you!
@nainibrok9139
@nainibrok9139 2 ай бұрын
Ein Student der Uni Passau dankt ;)
@hannahnelson4569
@hannahnelson4569 2 ай бұрын
Clever!
@hannahnelson4569
@hannahnelson4569 2 ай бұрын
This is cool!
@sherlzspi431
@sherlzspi431 2 ай бұрын
Sehr hilfreich👍
@Martin-vy4bj
@Martin-vy4bj 2 ай бұрын
49:48
@arindampareek1445
@arindampareek1445 2 ай бұрын
Where can we find the exercise/proofs solutions?
@Nonameeeeeaaeeaeww
@Nonameeeeeaaeeaeww 3 ай бұрын
Im Algorithmus von InsertionSort J=2 am Anfang also sollte A[j]=4 sein oder ? Warum steht A[j]=3 ? Also key =3 und nicht key=4 weil wir Index 2 haben
@PhilippKindermann
@PhilippKindermann 3 ай бұрын
Bei dem Beispiel bin ich schon in der Mitte eingestiegen, also bei j=5. Ich bin davon ausgegangen, dass wir j=2,3,4 schon erledigt haben.
@torcher5023
@torcher5023 3 ай бұрын
well, this thing is kinda hard to be implemented
@PhilippKindermann
@PhilippKindermann 3 ай бұрын
It definitely is! Here are a few links that might help you: gist.github.com/rmukh/cbfee78cbfbe73a36638a409726b7a84 codeforces.com/blog/entry/81768 github.com/leomccormack/convhull_3d
@ultramelon3960
@ultramelon3960 3 ай бұрын
this is an amazing series! Thank you!
@maaroofashkar1648
@maaroofashkar1648 3 ай бұрын
mr G ometer ! nice word play
@fridericusrex9812
@fridericusrex9812 3 ай бұрын
Best explanation on KZfaq.
@shivanshujain6074
@shivanshujain6074 3 ай бұрын
very helpful. thank you very much
@skittles6486
@skittles6486 3 ай бұрын
Thank you very much Philipp. These are one of the most amazing video lecture series and I am grateful that you made it public.
@TheHalveTamme
@TheHalveTamme 3 ай бұрын
Thank you for the videos, they are a great help. Eades paper can befound via Google Scholar: www.cs.ubc.ca/~will/536E/papers/Eades1984.pdf
@octaalma
@octaalma 4 ай бұрын
Excellent video Phillip! Do you happen to have a source for the algorithm that you used 8:38 in the video?
@PhilippKindermann
@PhilippKindermann 4 ай бұрын
Thank you! For this part, I've been following (with some modifications) chapter 4 "Drawing on Physical Analogies" by Ulrik Brandes in the book "Drawing Graphs: Methods and Models" edited by Michael Kaufmann and Dorothea Wagner: link.springer.com/chapter/10.1007/3-540-44969-8_4
@SiiKiiN
@SiiKiiN 4 ай бұрын
I implemented this function based on the equations in the videos and it wouldn't solve for the graph. I realized the in both the repulsive and attractive should have the distance be squared. There should be no l^2.
@PhilippKindermann
@PhilippKindermann 4 ай бұрын
Hey, that's interesting! Which graph and which parameters did you use? I tried my test graphs with both l^2 and distance^2, but both variants gave me almost the same drawing. In every source I can find, including the original paper, they square l and not the distance in the repulsive force. This is from the original paper, where their k is our l and their x is the distance between u and v: function f_a(x) := begin return x^2/k end; function f_r(x) := begin return k^2/x end; See, e.g., onlinelibrary.wiley.com/doi/epdf/10.1002/spe.4380211102 cs.brown.edu/people/rtamassi/gdhandbook/chapters/force-directed.pdf arxiv.org/pdf/1201.3011.pdf algo.uni-trier.de/demos/forceDirected.html / algo.uni-trier.de/demos/script/algorithm/fruchtermanReingoldAlgorithm.js
@sayanbaidya9724
@sayanbaidya9724 2 ай бұрын
did you take mod(distance) or just distance ?
@PhilippKindermann
@PhilippKindermann 2 ай бұрын
@@sayanbaidya9724 I'm not sure what you mean by mod(distance). Do you mean abs(distance)? distance should always be positive. I calculate sqrt( (v.x - u.x)^2 + (v.y - u.y)^2 ).
@sayanbaidya9724
@sayanbaidya9724 2 ай бұрын
@@PhilippKindermann Hi I was asking the original person who commented whether he took mod or not as results come same if I take mod(distance) or distance ^2. Yes you are right, it should always be positive value.
@tysonbeach2869
@tysonbeach2869 4 ай бұрын
What is the purpose of bounding shapes? Is it to represent more complex structures when you draw sp graphs at a high level? Or is it more theoretical. I can't seem to find an answer for that anywhere.
@PhilippKindermann
@PhilippKindermann 4 ай бұрын
Hey, the bounding triangle is crucial so that we can plug subdrawings together at the P- and S-nodes. Without them, we don't know how the drawings look like and how to combine them. This is a common approach when you have an inductive or recursive algorithm that follows some graph decomposition.
@balthasar1867
@balthasar1867 4 ай бұрын
timestamps würden die Vorlesung nochmal immens verbessern, aber das ist auch so schon mit Abstand die beste Vorlesung zu Algo, die öffentlich verfügbar ist
@PhilippKindermann
@PhilippKindermann 4 ай бұрын
Danke! Wenn ich etwas Zeit hab, pack ich bestimmt auch mal Timestamps dazu... ^^'
@concoursmaths8270
@concoursmaths8270 4 ай бұрын
amazing!!!!!
@balthasar1867
@balthasar1867 5 ай бұрын
Diese Vorlesung ist sooo viel besser als die an meiner Hochschule
@KotoOo
@KotoOo 5 ай бұрын
Wonderful to have the whole bunch of lectures that ain't giving a bit of spoiler how to practically implement any useful graph laying out strategies, keeping the codebase tight and clear ... =^_^= in 2024, what libraries could you recommend for generating useful / universal graph layouts? what programming language(s) has got the most advanced solutions for the area? are there any GPU-based solutions?
@PhilippKindermann
@PhilippKindermann 5 ай бұрын
For simple layouts there are many options, for example: Javascript: - d3.force: d3js.org/ - sigma.js: www.sigmajs.org/ - vis.js: visjs.github.io/vis-network/examples/ - dracula: github.com/strathausen/dracula Python: - networkx: networkx.org/ - Pyvis: pyvis.readthedocs.io/en/latest/index.html - Jaal: github.com/imohitmayank/jaal - ogdf-python: github.com/ogdf/ogdf-python Java (wouldn't recommend it): - JGraphX: github.com/jgraph/jgraphx C/C++: - OGDF: github.com/ogdf/ogdf/ - LEDA: www.algorithmic-solutions.info/leda_guide/GraphWin.html I'm aware of 2 GPU-based solutions, but haven't really tried them out yet. - cugraph: github.com/rapidsai/cugraph/blob/main/notebooks/algorithms/layout/Force-Atlas2.ipynb - GraphWaGu: www.willusher.io/publications/graphwagu I think that the two most powerful library are the open-source OGDF(ogdf.uos.de/), available for C++ and Python, and the commercial yFiles (www.yworks.com/products/yfiles), available for JavaScript, Java, and C#.
@theelysium1597
@theelysium1597 6 ай бұрын
Our (i.e. at my university) algorithm was a little different. We used [..., m+1] and [m-1, ...] for the points that are still to be sorted in - effectively excluding the median for future iterations. Also we drew lines so that every point had a line in the end. Not sure if those are just minor alterations, but just in case someone else stumbles upon this.
@ddx-gl3su
@ddx-gl3su 6 ай бұрын
Great Explanation!
@ElAbdu
@ElAbdu 6 ай бұрын
Vielen Dank
@Fruitzebraa
@Fruitzebraa 6 ай бұрын
Thanks for sharing the course videos! Just wondering what's the tool you were using to draw graphs in the video, the one that has grid and you can move them around?
@PhilippKindermann
@PhilippKindermann 6 ай бұрын
Hey! I created the slides with ipe and I'm showing the ipe editor window, so I can edit everything on the fly: ipe.otfried.org/ You can download the slides from algo.uni-trier.de/lectures/graphvis and directly open them in Ipe
@Fruitzebraa
@Fruitzebraa 6 ай бұрын
Thanks for sharing the tool and slides, Philipp! It's a very nice tool.@@PhilippKindermann
@addofmwdwdw
@addofmwdwdw 6 ай бұрын
Danjke für dein Video, liebe Grüße
@siradjbenam
@siradjbenam 7 ай бұрын
Please the name of the software used in this lecture
@PhilippKindermann
@PhilippKindermann 7 ай бұрын
I used Ipe (ipe.otfried.org/) to create the slides and Camtasia (www.techsmith.com/video-editor.html) to record and edit the video.
@siradjbenam
@siradjbenam 7 ай бұрын
@@PhilippKindermann big thank sir i do the same course for master 1 in my country and your courses are for me a big support
@mostafaismail3678
@mostafaismail3678 7 ай бұрын
This is very useful to a task I'm currently working on. I'm so glad you've made these awesome lectures public! Thank you so much <3
@gabealberro6081
@gabealberro6081 7 ай бұрын
fantastic
@MyAnno1404
@MyAnno1404 7 ай бұрын
Mr. Kiderman, if i have a street map and i want to divide the map into regions where each region represents the area where a certain street is closest how would i approach that? It seems the voronoi diagram cannot work in this case - only if i subdivide the street into alot of points (seems ugly) - is there a solution for this problem?
@PhilippKindermann
@PhilippKindermann 7 ай бұрын
There's algorithms for Line Voronoi Diagrams (Voronoi Diagrams of Line Segments). See for example this paper: people.mpi-inf.mpg.de/~mehlhorn/ftp/VoronoiLineSegments.pdf There's an implementation for ArcGIS: github.com/UNTGeography/VoronoiDiagramsGIS It's implemented in the Boost C++ Library: www.boost.org/doc/libs/1_75_0/libs/polygon/doc/voronoi_main.htm And there are wrappers for Python: github.com/fabanc/pyvoronoi and for C#: github.com/fabanc/SharpBoostVoronoi
@innokentiyromanchenko1450
@innokentiyromanchenko1450 8 ай бұрын
how to find arc in 2:30?
@taggosaurus
@taggosaurus 8 ай бұрын
Thank you from the bottom of my heart from India.
@harishsatishchandra
@harishsatishchandra 8 ай бұрын
These videos are amazing! Is it possible to get the slides? The link for the slides in the description appears to be dead
@PhilippKindermann
@PhilippKindermann 8 ай бұрын
Thank you! You can find the slides here: algo.uni-trier.de/lectures/algeo/slides/
@axelman0316
@axelman0316 8 ай бұрын
Thanks I learned a lot !! :D
@TheClockmister
@TheClockmister 9 ай бұрын
The time to calculate the overlap of two polygons is O((n + I) log(n)) time. So why recurse and get log^2(n) time? What am I missing here?
@PhilippKindermann
@PhilippKindermann 9 ай бұрын
The O((n + I) log n) = O(n log n) running time is to intersect two convex regions. But we have n convex regions (half planes) that we have to intersect. We do that via divide-and-conquer (like MergeSort), which adds an additional log n factor.
@TheClockmister
@TheClockmister 9 ай бұрын
@@PhilippKindermann Thanks a lot, I have been searching for an explanation for about an hour. Thanks a lot, I wish the textbook had a worked out an example tho... ):
@jonathanbiren6367
@jonathanbiren6367 9 ай бұрын
Thank you for your great work, Mr. Kindermann. Such a niche topic, that is yet so relevant to many aspects of computer and data science.
@prashantsingh-wg2vn
@prashantsingh-wg2vn 9 ай бұрын
Sir, which tool do you use to make presentations? It will be helpful in my masters.
@PhilippKindermann
@PhilippKindermann 9 ай бұрын
Hey, I use the vector drawing program ipe: ipe.otfried.org/ You can also open all my slides with the program
@prashantsingh-wg2vn
@prashantsingh-wg2vn 9 ай бұрын
@@PhilippKindermann Thank you.
@Code4Ever
@Code4Ever 10 ай бұрын
I expected the first Data Structure to be a maxHeap, since it will be way easier to get this done through a heap where we just need the maximum intersection point. Great explanation nonetheless
@PhilippKindermann
@PhilippKindermann 9 ай бұрын
The reason I didn't use a MaxHeap is that deletion cannot be done trivially in logarithmic time. Otherwise a MaxHeap would be easier, that's true.
@XahhaTheCrimson
@XahhaTheCrimson 10 ай бұрын
Thank you sir you saved a random undergraduated student tortured by geometry-related development...
@joaquinp5176
@joaquinp5176 10 ай бұрын
The end drawing in the example after adding the curves has the cycles back. Why is that? The cycle removal process is not permanent?
@PhilippKindermann
@PhilippKindermann 10 ай бұрын
You only remove the cycles such that a hierarchical drawing exists. But if you want to display the original graph at the end, you have to revert these changes.
@joaquinp5176
@joaquinp5176 10 ай бұрын
Are series-parallel suitable for modeling large state diagrams?
@PhilippKindermann
@PhilippKindermann 10 ай бұрын
Many state diagrams are series-parallel, but in general they don't have to be.