[HN Gopher] Computation Graphs and Graph Computation ___________________________________________________________________ Computation Graphs and Graph Computation Author : bmc7505 Score : 45 points Date : 2020-07-18 02:20 UTC (1 days ago) (HTM) web link (breandan.github.io) (TXT) w3m dump (breandan.github.io) | Kednicma wrote: | This is a big post. I'll point out what is especially interesting | in terms of equivalences. | | A square matrix on the Booleans is indeed also equivalent to a | directed graph, as explained. It is also equivalent to a Chu | space [0], specifically a sort of unitary Chu transformation. | | We can specialize slightly. Let our square matrices be upper | triangular; that is, let the lower triangle not including the | diagonal be all 0/false. Then the corresponding graph is a DAG. | (Apologies if this was in the article; I saw hints of it, but | never the direct statement!) The corresponding Chu space has | poset structure. These three facts are all related by fourth fact | that the matrix's rows are labels for a topological sorting of | the DAG, and the fifth fact that DAGs are equivalent to posets; | we obtain a sixth fact that posets are equivalent to upper | triangular Boolean matrices. | | [0] http://chu.stanford.edu/ | bmc7505 wrote: | Interesting! I was not aware of the connection to Chu spaces, | will have a look into that! Algebraic topology seems to have a | endless trove of many interesting dualities. I did find the | connection between topological ordering and boolean matrix | multiplication to be really interesting. I was taught a queue- | based algorithm as an undergrad, so learning about this was a | pleasant surprise. | bmc7505 wrote: | Hi HN, author here! This post discusses some research I and my | colleagues at McGill have been working on recently, borrowing | ideas from graph theory and linear algebra to model computation. | If any of these topics interests you, feel free drop me an email | at bre@ndan.co -- would love to get your feedback about GPGPU | compilation, boolean function analysis, abstract rewriting | systems or any of the topics discussed. Thanks! | jix wrote: | I haven't read everything, but it does contain a section about | something I'm quite familiar with: | | The article says "We compute the hashcode of the entire graph by | hashing the multiset of WL labels. With one round, we're just | comparing the degree histogram. The more rounds we add, the more | likely we are to detect a symmetry-breaker:", which is not | correct. | | Repeatedly re-labeling a graph by assigning a unique label to | each unique neighborhood histogram, until the corresponding | partition reaches a _fixpoint_ would compute the _one- | dimensional_ Weisfeiler-Lehman refinement. But there are _many_ | non-isomorphic graphs that you cannot tell apart with this! It | cannot tell apart any two regular graphs of the same size and | degree, and you can easily run into those in practice. | | Even if the code would repeat this process until a fixpoint is | reached, instead of hoping that 10 iterations suffice, non- | isomorphic graphs that result in the same WL partition means that | "The more rounds we add, the more likely we are to detect a | symmetry-breaker" doesn't hold. | | There are also more efficient ways of computing this. | | Now apart from one-dimensional WL refinement, where you compute a | label from the neighborhood of individual vertices, there is also | k-dimensional WL refinement, which very roughly speaking looks at | all length k sequences of vertices and computes statistics for | those. Here it is true that as k reaches |V| you will be able to | tell apart any two non-isomorphic graphs, but only because if | k=|V| you're trying all permutations! There is no fixed k that | will tell apart any two graphs. | | If you want to perform graph isomorphism tests in practice, I'd | recommend Traces: http://pallini.di.uniroma1.it/ | | It combines two-dimensional WL refinement with a recursive search | to tell apart all graphs, while using computational group theory | algorithms to efficiently prune the search space for graphs with | many symmetries. It is very efficient in practice. | | It is described in https://arxiv.org/abs/0804.4881 (also linked | from the website) and also has references for everything I wrote | (modulo any mistakes I made while summarizing). | brzozowski wrote: | Thanks for your feedback! I like the WL algorithm for its | simplicity, but agree there are specific cases it does not | handle well. It is meant to illustrate a simple message passing | algorithm, and is not a particularly efficient implementation. | Will clarify this point, thanks! | Kinrany wrote: | The article starts with details from the author's biography of | dubious relevance, and there's no table of contents. | bmc7505 wrote: | Agreed, the biographical details are not super relevant would | help to have a ToC. I have added one to the intro. Thanks for | reading! | goodmattg wrote: | Intriguing post! Back in my undergrad days I wrote a course | thesis on Syntactic Tree Kernels applied to the problem of | determining duplicate question on Quora. Like you, I am convinced | that using graphs to link semantics with structure is under- | explored: | | https://github.com/goodmattg/quora_kaggle | | https://goodmattg.github.io/articles/2017-09/Syntactic-Tree-... | | Further, as someone who came out of the the graph signal | processing world (Ribeiro, Gama, et. al.), and with recent | experience in types and functional programming (Pierce, etc.), I | too admire the beauty of using types and graphs, but as you note, | hardware implementation is a fundamental constraint to | production. Perhaps the IPU units from Graphcore are a move | towards this? I could use clarification on your points regarding | next steps in low-level languages and hardware. ___________________________________________________________________ (page generated 2020-07-19 23:00 UTC)