OrgPad logo

Asistent pro kreslení grafů v OrgPadu

Created by Pavel Klavík

Přednáška na STTI (https://www.mff.cuni.cz/cs/kam/poradane-akce/stti/stti-2021) o tom, jak v OrgPadu funguje automatické umisťování a přesouvání buněk.

#OrgPad, #STTI, #algoritmus, #nakreslení, #prezentace

Asistent pro kreslení grafů v OrgPadu

Pavel maly

Asistent pro kreslení grafů v OrgPadu

Pavel Klavík

spoluzakladatel a CTO

logo full

 

STTI 2021

Symetrie grafů

Grafový izomorfismus

Graf souvislostí

Geometrické reprezentace grafů

Doktorát na MFF UK téma vizualizace grafů (ukončen 2017)

Softwarový inženýr ve vyhledávači Google v Curychu (1.5 roku)

Kdo za OrgPadem stojí

image

Propagátorka Baruš

Bývalá učitelka, umělkyně, dnes školitelka OrgPadu a správce našich sociálních sítí.

Barus mala

Co je to OrgPad?

Je to nástroj na zapisování a sdílení informací ve formě grafu.

waiter

Vidíte ho tady celou dobu.

Proč to nejsou myšlenkové mapy?

Myšlenkové mapy jsou glorifikované bodíkové seznamy doplněné obrázky.

image

Jejich tvůrce Tony Buzan je markeťák a podvodník, který si zvyšoval svoji důvěryhodnost vydáváním se za profesora. Celé je ta založené na nesmyslech a pseudovědeckých poznatcích.

Výčet

24

25

Pravidla pro OrgPad

Baruš to nazvala svobodné strukturování:

  1. Umisťuj si myšlenky a propojuj je svobodně, jak chceš.
  2. Nemusí být centrální buňka, z které všechno vychází.

Vyvozování

Tomu říká řetěz nebo had.

1

Řetězy se mohou spojovat

19

Hodně paralelních spojů vypadá zajímavě

image

Experimenty na dětech na základní škole

Používala ho ve výuce dětí všech ročníků ZŠ, zejména ve 4. a 5., na ZŠ Hůrka v Kutné Hoře. Děti si nástroj sami osvojily a začaly ho používat na všechno.

Sepsala o tom pedagogické články na metodickém portálu RVP.

Jaké struktury přirozeně vytváří hlava?

Baruš vypozorovala, že v pracech dětí přirozeně vznikají různé grafové struktury. Identifikovala je bez jakékoliv znalosti grafů. Tyto struktury lze vzájemně libovolně kombinovat.

Nacházení souvislostí

2

Odpudivé síly

Když jsou obdélníky buněk dostatečně blízko (nebo se překrývají), působí na sebe navzájem odpudivými silami od sebe. Když jsou dál než pevně zvolený limit, nepůsobí na sebe žádnými silami.

odpuzování

Přitažlivé síly pro dlouhé spoje

Používali jsme původně, ale mělo to tendenci moc přibližovat buňky k sobě. A nebylo možné mít dlouhé spoje napříč diagramem. Protože vytváříme asistenta a nekreslíme grafy z nuly, není tohle podstatné.

dlouhé spoje

Odpudivé síly mezi paralelními spoji

Paralelní spoje se nazvájem odpuzují. Funguje to velice dobře pro málo spojů, což je postačující.

odpuzování spojů2

Síť myšlenek

5

Roztroušené myšlenky bez spojů

Něco v rychlosti potřebuji uspořádat. Časem mohu propojit.

7

Analýza a syntéza

Nebo porovnávání dvou myšlenek.

8

Buňky

Mají pozice a velikosti. Velikosti se mohou měnit podle toho, jak se buňky otevírají/zavírají nebo mění obsah.

Síly posouvají buňky.

Spletité klubko

Signalizuje, že tomu nerozumíme, musíme si to urovnat.

6

Odpudivé síly

Pokud je spoj poblíž buňky, kterou nespojuje, působí na sebe odpudivými silami. Výpočet je mnohem pomalejší pro zahnuté spoje než pro rovné (zhruba 10x).

spoj

Spoje

Síly ohýbají spoje jejich směrem.

Ohnuté spoje jsou kvadratické Beziérovy křivky. Dostatečně rovné spoje se narovnají na úsečky.

DEMO

Narovnávání zahnutých spojů

vychyleny spoj

Přitahování k zabalené pozici

Snažíme se, aby rozbalený graf byl co nejbližší tomu zabalenému, jinak by se změny v rozbaleném příliš lišily od těch v zabaleném grafu. Proto buňky mají tendenci se vracet na svoje původní pozice.

otevření

Rozbalený graf

Každé okno prohlížeče má svůj, podle toho, co je aktuálně otevřeno. V rozbaleném grafu se pracuje, ale není sdílený.

image

Celkový čas strávený v OrgPadu

Čas měříme velice konzervativně, reálně je to mnohem více.

image

Kdo OrgPad používá

imageimageimage

Otec původní myšlenky doc. Zdeněk Hedrlín

Matematik, učitel a filozof, působil na Matematicko-fyzikální fakultě UK. Přes 40 let se zabýval problémem, jak zapsat své myšlenky lépe pomocí počítače.

cache-images-f7-data-web-obsah-puvodni-verejnost-konalo-se-2018-06-hedrlin-hedrlin-resize-w1280-h0-resize-w1600-h1600

Buňky a spoje na sebe působí odpudivými silami

Síly aplikujeme Archimédovsky, tedy síla je změna pozice, ne změna rychlosti. Je to tak jednodušší a dává to pěkné výsledky.

Všechny působící síly složíme dohromady a aplikujeme jejich součet.

Screenshot (126)

OrgPad napodobuje fungování mozku

Mozek funguje ve formě sítě, kde jsou jednotlivé myšlenky propojené. OrgPad umožňuje si tuhle síť umístit před sebe a pracovat s ní.

Používání OrgPadu lidem předělá fungování hlavy. Lidé nám často říkají, že to trvá zhruba 10 hodin.

brain4

Jak OrgPad roste

Zhruba 12x růst za poslední rok. Slabý růst v prosinci a přes léto.

image

Zabalený graf

Společný pro všechny, uložený na serveru. Všechny buňky jsou v něm zavřené.

image

Co je lepší či horší nakreslení?

Jak rozhodovat estetiku? Jak umožnit lidem mít dostatečnou svobodu?

Jak linearizovat grafovou strukturu?

Když ji třeba chceme převést do Wordu nebo vytisknout. Dnes kopírujeme buňky v náhodném pořadí.

Děláme nástroj pro každého

Objevení nových pohledů a souvislostí

Tím, že vidíme myšlenky před sebou, osvobodíme si hlavu a můžeme nad problematikou přemýšlet z jiného úhlu a objevovat nové souvislosti.

dimension

Odstínění všech zbytečností

Dnes je člověk u počítače přehlcený blbostmi, které vůbec nechce řešit.

Nakreslení v kolaborativní práci

Každý může mít jinak otevřené jednotky, takže se nakreslení liší. Jak interpretovat změnu v jednom nakreslení do jiných nakreslení?

Analýza reálných dat + neuronová síť?

Dnes mám zhruba 1000 veřejných OrgPagí, které si může kdokoliv stáhnout. Nad nimi by šlo dělat různé analýzy nebo třeba trénovat neuronovou síť.

Co nechceme

Bad Word

Zahnuté spoje aproximujeme lomenou čárou s jedním zlomem

Pouze pokud je lomená čára blízko buňky, počítáme přesnou vzdálenost. Skoro vždycky to není pravda, takže výpočty pro zahnuté spoje jsou skoro vždycky rychlejší.jeden zlom

Vyřešíme věci za vás, abyste se mohli soustředit na to důležité

Třeba automatické umisťování/přesouvání buněk, o kterém je dnešní přednáška.

burden lighter

Steve Jobs

Steve Jobs Headshot 2010-CROP %28cropped 2%29

"Vytvořili jsme Macintosh pro lidi, kteří chtěli používat počítač, ne se učit používat počítač."

Automatický výpočet rozměrů jednotky

Vykreslujeme opakovaně mimo obrazovku. Pro zvolenou šířku získáme odpovídající výšku buňky. Prohledáváme prostor možných velikostí, abychom nalezli ideální rozměry esteticky.

bunky

Animace pomocí fyzikální simulace pružin

Vidíte tady všude kolem. Například buňky na sobě mají pružiny, které je přitahují k jejich nové pozici. Díky tomu je možné animace plynule skládat a navazovat. Tenhle způsob animací vymysleli designéři v Applu.

OrgPad je asi jediný systém, který je neřeší simulací, ale řešením diferenciálních rovnic kmitání pružiny. Pružina má dva parametry: tuhost a tlumivost. Tyto parametry definují tři druhy pružin: podtlumené, přetlumené a kriticky tlumené. Pro ně jsou rozdílné vzorce, do kterých se dosadí počáteční pozice a rychlost.

7CCH51r

Asistent pro vylepšování nakreslení grafu

Celý proces opakujeme ve zhruba 25 iteracích:

  1. Spočítáme síly.
  2. Posuneme buňky a spoje podle nich.

Výpočet běží v samostatném vláknu jako WebWorker. Výsledek poté pošleme hlavnímu vláknu a odanimujeme buňky a spoje na jejich novou pozici.

Zrychlení, která jsme implementovali

Ideální by byla rychlost tak 100 až 200 ms na přepočet. Tu umíme pro malé grafy, ale na větších pokulhává. Do nedávna byl největší bottleneck samotné vykreslování.

Jak problém vyřešit efektivněji

Algoritmické výzvy OrgPadu

Během práce na OrgPadu vykrystalizovalo několik obtížných problémů, které jsme museli řešit.

Vrcholy nemají velikosti, jsou to pouze body

Překomplikované algoritmy

V teorii se hlavně řeší asymptotická složitost, praktičnost algoritmů se moc neřeší. Z praktického hlediska je log(N) konstanta, zvlášť pokud je základ logaritmu dostatečný. Potřebujeme algoritmus, který

  1. Poběží rychle nad reálnými daty.
  2. Musíme nad ním mít kontrolu.
  3. Musí jít naimplementovat v krátkém čase.

Statistiky přepočtu po otevření jedné buňky

Number of vertices: 255, total pairs 485775 in all iterations.

Number of edges: 273, total vertex-edge pairs 522112.5 in all iterations.

Total time: 901.00 ms

Skvělý produkt

Musí být zastoupeny všechny tři složky.

Nakreslení se nesmí moc měnit během úprav v grafu

Vetšina algoritmů všechno nakreslí od začátku, neadaptují se podle měnícího grafu.

Prostor máme rozdělený na čtverce. Počítame pouze dvojice, co spolu sdílí čtverec.

215924534 826468104729397 8806203082278002716 n

Updating positions total time: 255.90 ms

Vlastně mi není jasné, proč tohle trvá tak dlouho. Musím to prozkoumat :).

Algoritmy a výpočty

Většina klíčových problémů byla vyřešena někdy v 70.-80. letech. Tehdy byly položeny základy dnešních systémů.

V jádru každého systému se vynoří i složité algoritmické otázky.

Kolaborativní práce

To je problém, který teprve budeme řešit. V tuto chvíli předpokládáme, že jednotlivé změny různých lidí zároveň spolu komutují. To funguje překvapivě dobře, protože jednotlivé buňky mají různé náhodné 128 bitové identifikátory.

Řeší se to pomocí Operational transformations, které zpopularizoval nástroj Google Docs.

220px-OTtp1

Architektura systému

Jestliže algoritmy jsou základní stavební bloky programů, musíme je poskládat do celkové stavby. Ta musí dávat smysl, musí být dobře rozložená na části, atd. Její podoba je ovlivňována požadavky z reálného světa.

Různí lidé mají různé pootvírané buňky

Proč nestačí nějaký takový použít?

Nefungují jako asistenti

V OrgPadu je důležité, že si mohu věci rozmístit esteticky jak chci, podobně jako v malbě. Přílišné přesouvání by lidi nesmyslně omezovalo. OrgPad má jako nástroj asistovat, ne omezovat.

O sněhu ve tvaru sněhové vločky

image

Chunk total time: 185.60 ms

Force computation (approx. 500 ms)

OrgPad je napsaný v Clojure(Scriptu)

OrgPad je celý napsaný v programovacím jazyku Clojure(Script). To nám dává 10x větší efektivitu ve psaní kódu a vytváření aplikace.

Clojure logorich

Role informatiky v reálném světě

Informatika je věda, protože interaguje s reálným světem. Příchod počítačů obrátil na ruby všechny oblasti lidské činnosti.

Při vytváření něčeho nového je potřeba začít od reálných potřeb lidí. Ideálně řešíme svoje vlastní problémy, protože jim nejlépe rozumíme.

Různá nakreslení se počítají simulací pružin

Ale neřeší celou řadu problémů klíčových pro OrgPad, nebo alespoň dostatečně.

Průvodce Japonskem ve tvaru Japonska

image

Jak vypadá kód velkého systému

kód systému

Tutteho pružinové nakreslení

Funguje pro 3-souvislí rovinný graf. Přišpendlíme vnější stěňu jako konvexní n-úhelník. Ostatní vrcholy umístíme do těžiště jejich sousedů. Takové pozice lze najít řešením soustavy s Laplaceovou maticí.

image

Hallovo spektrální nakreslení grafů

Chceme umístit každý vrchol skoro do těžiště svých sousedů. Takové nakreslení lze nalézt přes vlastní vektory odpovídající nejmenším vlastním číslům Laplaceovy matice.

image

Proč používat odlišné matice?

Matice popisují lineární transformace. Jestliže x je ohodnocení vrcholů, získáme y = AGx a z = LGx:

image

Tedy zi popisuje, o kolik se hodnota vrcholu liší od průměru jeho sousedů.

Laplaceova matice

image

Matice sousednosti

image

Jak se běžně kreslí grafy

Existují různá speciální druhy nakreslení, která nejsou moc užitečná.

Příklad grafu

image