{"id":225,"date":"2017-04-14T14:11:27","date_gmt":"2017-04-14T22:11:27","guid":{"rendered":"https:\/\/matsguru.com\/?p=225"},"modified":"2017-04-14T14:11:27","modified_gmt":"2017-04-14T22:11:27","slug":"bistellar-simplification","status":"publish","type":"post","link":"https:\/\/matsguru.com\/?p=225","title":{"rendered":"Bistellar simplification"},"content":{"rendered":"<p>In the late 80s <a href=\"https:\/\/doi.org\/10.1016\/0012-365X(90)90178-K\">Udo Pachner introduced the idea of a bistellar move<\/a> which can modify the triangulation of an object (simplicial manifold) without changing its fundamental properties (topological type). About a decade later, <a href=\"https:\/\/projecteuclid.org\/download\/pdf_1\/euclid.em\/1045952351\">Frank Lutz implemented bistellar_simplification<\/a> as a tool to classify objects by their topological type using a simulated annealing strategy. Later, Niko Witte wrote a C++ implementation of Frank&#8217;s code for <a href=\"https:\/\/polymake.org\/doku.php\">polymake<\/a>, which considerably sped up the computation. I, then, spent several (loong) months trying to improve Niko&#8217;s code so that it can be used to recognize <a href=\"https:\/\/matsguru.com\/triangulations-of-the-akbulut-kirby-spheres\/\">our\u00a0spheres<\/a>.<\/p>\n<p>The\u00a02-dimensional version of a bistellar move is well known in the graphics community, though it is usually called\u00a0by a different name: edge flips. It can\u00a0be used to find &#8220;nice&#8221; triangle meshes of some domain, which may, for example, be applied to finite element-type computations.<\/p>\n<p>The idea of the bistellar move is simple. We&#8217;ll be using <a href=\"https:\/\/boolesrings.org\/matsguru\/2012\/11\/28\/the-significance-of-adipra\/\">some terminology from here<\/a>. Let&#8217;s start with\u00a0a simplicial complex [latex]K[\/latex] of dimension [latex]d[\/latex] and a simplex [latex]\\sigma \\in K[\/latex] of dimension [latex]0\\le i \\le d[\/latex]. (Technically, [latex]K[\/latex] should be a closed combinatorial manifold.)<\/p>\n<p>A bistellar [latex]i[\/latex]-move is [latex]\\Phi_K(\\sigma) = K &#8211; \\text{star}(\\sigma,K) + \\tau \\ast \\partial \\sigma[\/latex], where [latex]\\tau[\/latex] is a [latex](d-i)[\/latex]-simplex NOT\u00a0in [latex]K[\/latex] such that [latex]\\partial \\tau = \\text{link}(\\sigma,K)[\/latex]. The move is only valid if a [latex]\\tau[\/latex] satisfying these properties exists.<\/p>\n<p>The animated gif below shows some bistellar moves in action. You can see why the algorithm is called a bistellar simplification &#8212; we can change the triangle mesh to have fewer triangles.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-195 size-full\" src=\"https:\/\/matsguru.com\/wp-content\/uploads\/2017\/03\/gify1.gif\" alt=\"\" width=\"755\" height=\"566\" \/><\/p>\n<p>Consider an abstract graph whose nodes are simplicial complexes\u00a0which are connected by an edge if there exists a single bistellar move to get from one complex to the other. This graph is known as the bistellar flip graph or Pachner graph. The bistellar_simplification algorithm is equivalent to a random walk on this infinite graph which attempts to identify the topological type of the input complex [latex]K[\/latex] by lowering the [latex]f[\/latex]-vector of [latex]K[\/latex].<\/p>\n<p>Tracking the\u00a0[latex]f[\/latex]-vector is the cheapest way to track our progress of the simplification. In fact, for a 4-dimensional sphere, the number of vertices and edges alone is enough to learn about the entire [latex]f[\/latex]-vector [<a href=\"http:\/\/dx.doi.org\/10.4153\/CJM-1964-053-0\">Klee<\/a>]. So we can actually track the progress of the simplification on a 2 dimensional graph.<\/p>\n<p>Below is a video tracking the progress of our modified bistellar_simplification on <a href=\"https:\/\/matsguru.com\/triangulations-of-the-akbulut-kirby-spheres\/\">our Akbulut-Kirby 4-sphere AK_I_3<\/a>. Since following a single dot was difficult to see, I am displaying the [latex]f[\/latex]-vector (or, more precisely, just the vertex and edge count) of 1000 consecutive complexes at a time. For each of those 1000 complexes, I counted the number of 0-,1-,2-,3-,4-dimensional bistellar moves were made (red = 4-move grows the [latex]f[\/latex]-vector, green = 0-move makes [latex]f[\/latex]-vector smaller; green = good). The box on the bottom right displays the vertex and edge count of the complex at the specified round.<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/PwB4rEBEcCA\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Notice that the simulated annealing strategy brings the [latex]f[\/latex]-vector down until it gets stuck for a while, then it grows the [latex]f[\/latex]-vector in an attempt to jiggle the complex out of the local min. The current implementation uses a greedy random strategy, the modifications we made to the strategy only improved the algorithm enough to recognize <a href=\"https:\/\/matsguru.com\/research\/triangulations-of-akspheres\/\">AK_I_3, AK_II_3, AK_III_3<\/a>. The other spheres to our knowledge have not been recognized by any heuristic software we know of.<\/p>\n<p>We have also tried to implement a Markov chain Monte Carlo (Metropolis) method to improve the algorithm. We have tried several different parameters for the energy. Our tests so far indicate that an MCMC strategy results in a significant slow down of the algorithm. We are now looking into testing other deep learning techniques.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the late 80s Udo Pachner introduced the idea of a bistellar move which can modify the triangulation of an object (simplicial manifold) without changing its fundamental properties (topological type). About a decade later, Frank Lutz implemented bistellar_simplification as a tool to classify objects by their topological type using a simulated annealing strategy. Later, Niko&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[8,9,5],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-bistellar","tag-software","tag-triangulation"],"_links":{"self":[{"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/posts\/225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matsguru.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225"}],"version-history":[{"count":1,"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/matsguru.com\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions\/226"}],"wp:attachment":[{"href":"https:\/\/matsguru.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matsguru.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matsguru.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}