{"id":8189,"date":"2026-07-30T17:51:48","date_gmt":"2026-07-30T22:51:48","guid":{"rendered":"https:\/\/justinparrtech.com\/JustinParr-Tech\/?p=8189"},"modified":"2026-07-30T17:51:48","modified_gmt":"2026-07-30T22:51:48","slug":"ca-based-topology-mapper","status":"publish","type":"post","link":"https:\/\/justinparrtech.com\/JustinParr-Tech\/ca-based-topology-mapper\/","title":{"rendered":"CA-Based Topology Mapper"},"content":{"rendered":"<h2>Quick Start<\/h2>\n<p>Click here to play with the topology mapper:\u00a0 <a href=\"https:\/\/justinparrtech.com\/JustinParr-Tech\/apps\/jstopology\/JS-Topology.html\" target=\"_blank\" rel=\"noopener\">https:\/\/justinparrtech.com\/JustinParr-Tech\/apps\/jstopology\/JS-Topology.html<\/a><\/p>\n<ol>\n<li>Click the &#8220;Raindrops&#8221; button to generate some raindrops.<\/li>\n<li>Click the &#8220;Play \/ Pause&#8221; button<\/li>\n<\/ol>\n<p>The three sliders at the top allow you to control the raindrops.\u00a0 Adjust them then click &#8220;Raindrops&#8221; for a new board.<\/p>\n<h2>Using Cellular Automation to Map Topology<\/h2>\n<p>Let&#8217;s say that you have raindrops.\u00a0 Let&#8217;s say that the raindrops are actually paint drop.\u00a0 When each paint drop falls, it leaves a circle.\u00a0 Some of these circles overlap, while others don&#8217;t.\u00a0 What&#8217;s the easiest way to find out if the regions inside all of the raindrops are all connected?<\/p>\n<p>This solver uses Cellular Automation:<\/p>\n<ul>\n<li>All &#8220;raindrop&#8221; cells are cataloged.<\/li>\n<li>We start with 5 &#8220;seeds&#8221; picked randomly from the list of raindrop cells.<\/li>\n<li>Now, we look at the neighbors of every cell:\n<ul>\n<li>If a &#8220;raindrop&#8221; cell borders a seed cell, it takes the state of that seed.<\/li>\n<li>If a seed cell borders a seed of higher rank, it switches to the state of the higher-ranked cell.<\/li>\n<\/ul>\n<\/li>\n<li>If we reach a stable state (no cells switched states)\n<ul>\n<li>We look at the list of &#8220;raindrop&#8221; cells and select 5 more candidates.\n<ul>\n<li>If a candidate already has a seed state, that candidate is discarded.<\/li>\n<li>If we run out of candidates, then the topology is solved.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Once the topology is solved, any seed which retained it&#8217;s original state is a &#8220;surviving seed&#8221;.\n<ul>\n<li>We simply print a list of all surviving seeds.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-8190\" src=\"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-before-600x570.png\" alt=\"\" width=\"600\" height=\"570\" srcset=\"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-before-600x570.png 600w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-before-300x285.png 300w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-before-768x730.png 768w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-before.png 813w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Above, we have some &#8220;paint&#8221; raindrops on a black background.\u00a0 Below, the topology of those raindrops is solved:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-8191\" src=\"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-solved-600x567.png\" alt=\"\" width=\"600\" height=\"567\" srcset=\"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-solved-600x567.png 600w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-solved-300x283.png 300w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-solved-768x726.png 768w, https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-content\/uploads\/Raindrops-solved.png 815w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quick Start Click here to play with the topology mapper:\u00a0 https:\/\/justinparrtech.com\/JustinParr-Tech\/apps\/jstopology\/JS-Topology.html Click the &#8220;Raindrops&#8221; button to generate some raindrops. Click the &#8220;Play \/ Pause&#8221; button The three sliders at the top allow you to control the raindrops.\u00a0 Adjust them then click &#8220;Raindrops&#8221; for a new board. Using Cellular Automation to Map Topology Let&#8217;s say that [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8189","post","type-post","status-publish","format-standard","hentry","category-other-stuff"],"_links":{"self":[{"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/posts\/8189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/comments?post=8189"}],"version-history":[{"count":1,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/posts\/8189\/revisions"}],"predecessor-version":[{"id":8192,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/posts\/8189\/revisions\/8192"}],"wp:attachment":[{"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/media?parent=8189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/categories?post=8189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justinparrtech.com\/JustinParr-Tech\/wp-json\/wp\/v2\/tags?post=8189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}