I need a method written to find an optimal (or close to optimal) rectilinear steiner tree. Example problems will have between 5 and 20 nodes to connect.
I have written a hill-climbing algorithm that naively just flips each segment in the steiner graph to true/false and then scores the solution. I don't need to keep what I have, I can't make it do what I need. I've been doing a lot of research and have found there are other ways that I'm not capable of handling right now. Example: removing extraneous points to produce a "convex hull" of steiner points to reduce the solution space.
Solution can be deterministic or nondeterministic. As long as reasonable solutions exist. Optimal solution is not a requirement.
Ideal solution: accepts JSON list of nodes (x/y coordinates), returns a list of segments (start/end)