私は計算トポロジー クラスの同様の問題を調査しており、以下に概説する方法である程度の成功を収めています。
まず、2 つの入力ポイントで高さを評価し、任意の入力に対して < または > (等しくない) を返す比較関数が必要です。これを行う 1 つの方法は、ポイントが同じ高さである場合、位置ベースまたはランダム インデックスを使用してより大きなポイントを見つけることです。これは、高さに極小の摂動を加えていると考えることができます。
ここで、各点について、周囲のすべての隣接点の高さを比較します (2D 長方形グリッドには 8 つの隣接点があります)。ポイントの下のリンクは、高さがポイントよりも小さいすべての隣接ポイントのセットになります。
隣接するすべての値が下のリンクにある場合は、極大値に達しています。下のリンクにポイントがない場合は、ローカル ミニマムにいます。それ以外の場合、下のリンクが 1 つの接続されたセットである場合は、斜面上の通常のポイントにいます。しかし、下のリンクが接続されていない 2 つのセットである場合は、サドルにいます。
2D では、チェックしているポイントの周りに循環順序で 8 つの隣接ポイントのリストを作成できます。比較関数に応じて、各近傍に +/-1 の値を割り当てます。次に、そのリストをステップ実行し (2 つの端点を比較することを忘れないでください)、符号が変化する回数を数えて、下のリンクの連結要素の数を決定します。
どのサドルが「重要」かを判断することは、より難しい分析です。ガイダンスについては、http : //www.cs.jhu.edu/~misha/ReadingSeminar/Papers/Gyulassy08.pdf を参照してください。
-マイケル