diff --git a/Engine-prototype.md b/Engine-prototype.md index da8e26a..c44984b 100644 --- a/Engine-prototype.md +++ b/Engine-prototype.md @@ -30,4 +30,10 @@ Some of these are obvious, but we may as well write them down. Note we may want * Track the current displayed witnesses of satisfying the constraints (after all, that's what we are showing). In lightly constrained networks, temporarily add constraints fixing all the entities except for the ones that are being moved, backing off on some temporary constraints by distance in the constraint network until we get a low-dimensional component that we are on, and move just along that component. ## Overall solver approaches -[Need to start listing some here.] \ No newline at end of file + +* Find the Gröbner basis of the constraints. This definitely tells us a lot about the possible configurations. For example, the basis will be 1 if and only if there are no solutions (correct?). And we should be able to tell if the system is rigid, i.e., has only finitely many solutions (correct?). In this case, can we find all of the algebraic number solutions? And hopefully in the general case, we still stand to find some rational points. We're of course also fine with finding say quadratic or other low-degree algebraic numbers that satisfy the constraints. (I'm no algebraic geometer; can a 1-dimensional variety have no rational points? I assume for any fixed degree, it can have only finitely many algebraic points of that degree over Q? +* Use Newton's method to minimize the sum of the squares of the constraints. If we do find an approximate zero this way, is there a way to find a nearby algebraic zero? Sadly, if we don't find a zero this way, we may have just gotten stuck at a local minimum, so that's no proof the constraints are inconsistent. +* Use homotopy continuation (see https://www.juliahomotopycontinuation.org/) to get numerical information about the solution variety (and generate numerical approximations to points on it, correct?) If I understand correctly, an advantage of this method is that we get an almost-sure proof that the system is inconsistent (if it is), correct? And become almost sure whether it is rigid (has only isolated solutions), correct? As with Newton's method, we still have the question of whether having approximate numerical solutions helps us find exact algebraic ones. Also, if I understand correctly, this approach comes with a natural way to update solutions as one element is dragged, is that right? +* Since generally speaking each constraint is quadratic, there _might_ be some useful information here: https://math.stackexchange.com/questions/2119007/how-do-you-solve-a-system-of-quadratic-equations + +Feel free to add in other ideas in any of these categories. \ No newline at end of file