←back to thread

92 points greentec | 1 comments | | HN request time: 0.212s | source
Show context
kookamamie ◴[] No.44352775[source]
> Wave Function Collapse

I've always found the name pretty misleading and grandiose, relative to what the algorithm actually does.

replies(4): >>44352958 #>>44353195 #>>44354909 #>>44355467 #
b33j0r ◴[] No.44353195[source]
I think the metaphor is great.

Each tile has a superposition of possible states that collapse into one observed state. That’s all the metaphor is meant to mean, I think.

What are better names?

- Lego Simplices

- Tile Constraint Pairing

- Pipe Fitting

- Cartesian Convolution (nah)

- Finite automata (ok that’s fair, but subthings need names)

I dunno, I think the WFC metaphor works for me. The “wavefunction” is just the finite set of states that have a non-zero probability of being observed.

replies(5): >>44353336 #>>44354248 #>>44354369 #>>44354456 #>>44356756 #
kookamamie ◴[] No.44353336[source]
> Each tile has a superposition of possible states

This is like saying an uninitialized integer has a superposition of all possible values. I find it a very convoluted way of saying "each tile has a set of possible next states" - dragging quantum terms to this is just confusing, in my opinion.

replies(2): >>44353368 #>>44357120 #
b33j0r ◴[] No.44353368[source]
You’re not wrong. I think I initially had higher expectations myself. But as a person who names things, I don’t really find this one to be a huge stretch.

> This is like saying an uninitialized integer has a superposition of all possible values.

Well? Yeah! And I personally like that way of thinking about sets. It maps pretty directly to my understandings of other things in math and physics.

replies(1): >>44353428 #
kookamamie ◴[] No.44353428[source]
Here's the algorithm described without the quantum nonsense:

1. Analyze Rules: Extract valid patterns (modules) and their compatibility rules (adjacency constraints) from input or define them.

2. Initialize Grid: Create an output grid where each cell initially contains all possible modules (maximum uncertainty).

3. Choose and Assign: Select the cell with the fewest valid modules remaining. Randomly assign one compatible module to it.

4. Propagate Constraints: Update neighboring cells by removing modules incompatible with the newly assigned one. If a cell loses all options, a contradiction occurs.

5. Handle Contradiction: If a contradiction arises, either backtrack to a previous choice or restart the process.

6. Repeat: Continue from step 3 until all cells are assigned a module or an unresolvable contradiction occurs.

replies(2): >>44353575 #>>44355059 #
1. rcxdude ◴[] No.44353575[source]
Which is essentially how a basic sudoku solver works (which usually only has one solution, as opposed to many)