Show HN: MarkovJunior, PPL based on pattern matching and constraint propagation
github.com
github.com
What research or other projects have been impactful on this work?
From the author, 40 minutes of the algorithm running through examples. [2]
Past stories about Wave Function Collapse [3]
[1] https://github.com/mxgmn/WaveFunctionCollapse
Youtube videos of WFC https://www.youtube.com/results?search_query=wave+function+c...
[2] https://www.youtube.com/watch?v=DOQTr2Xmlz0
[3] https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
For MarkovJunior, the recent projects that were impactful the most were Imagegram by Guilherme S. Tows [1] and Daniel Ritchie's dissertation [2] about PPLs for procgen. I took quite a different approach from Ritchie's though.
A fantasy of mine is to have a bag of arbitrary constraints and behaviors of agents that exercise the system. One could sketch a building, model the behavior of people that will use it and let the system run, doing backwards and forwards inference to evolve a structure that makes those agents satisfied across lots of criteria. The designer if they are still called that, can select designs they like and the system can use that as a seed or test oracle. Virtual cows, cow paths and evolvable structures wrt those cow paths.
What do you think of "Growing Neural Cellular Automata" [1]
Are you by chance following CadQuery? [2]
https://www.semanticscholar.org/paper/Combining-Markov-Rando...
Currently, AFAIK, property based testing relies on mostly random generation of input vectors. It's possible to "shape" those vectors into other data structures such as trees [2] and it's the way it's usually done, but it's difficult and error-prone for more complex inputs.
There's also the option to filter each vector before running, or, after running, by performing the shrinking algorithm to produce the minimal input vector that reproduces the problem.
When I tried using property based testing for my use-case, as a model-based testing, I had to write code to filter most of the random test vectors since they weren't relevant, they didn't make sense.
So it might be possible to guide the generation of the input vectors so they'll be less random, and save time during run.
[0] https://typeable.io/blog/2021-08-09-pbt
[1] https://fscheck.github.io/FsCheck/StatefulTesting.html
[2] https://www.stackbuilders.com/blog/a-quickcheck-tutorial-gen...
Are there any other possible use cases of this language other then image or maybe in-game world generation? Do you consider it just as an interesting academic problem or do you plan to use it somewhere?
In the first Open Problem, maybe the generator tweak for random Hamiltonian paths is that two grids are needed: one for the eventual H-path; and one of points that are the centroids of the first which is used to draw a random tree starting from some point, subject to some rules about distances to unconnected nearest neighbours being acceptable (hunch e.g. of length >= sqrt(2)). Then draw around that tree on the first grid to get the H-path. (Grid graph duality use.)
I'd guess this can be generalised to 3D by drawing the H-path on each 2D plane slice, and some simple rules about choosing the degree of interconnection between those planes.
It seems like all the tools for tuning the shape of the initial random trees already exist in MJ, based on the examples shown.
There, now this is a proper series of unsubstantiative comments. :)