Brute Force 方法寻最相似点

Brute Force 方法:

描述:检查当前点到集合中所有其他点的距离,找到距离最小的点。
时间复杂度:O(n),其中n是点数。
适用场景:
(1)小问题实例:
Brute Force通常适用于解决输入量较小的问题,其中可能的解决方案数量是可控的。
(2)简单问题:
当问题相对简单且解决空间不太大时,Brute Force可以提供清晰且易于实现的解决方案。
(3)验证和调试:
Brute Force可以用来验证更优化的算法的正确性。它作为一个基线,可以将更复杂的算法的结果与之进行比较。
(4)组合问题:
一些组合问题,例如生成所有可能的排列或组合,自然适合于Brute Force方法。
(5)探索性分析:
当探索一个新问题及其解决空间时,Brute Force算法可以帮助获得见解和理解问题的特征。
(6)启发式评估:
Brute Force可用于评估启发式算法或近似算法。通过将启发式的结果与通过Brute Force获得的最优解进行比较,可以评估启发式的质量。
在一组坐标点集寻最近似点为例:

        private Point2d FindBestPtFromIntersections(Point2d MousePt,List<Point2d> intersections)
        {
            Point2d result = new Point2d();
            List<Tuple<Point2d, double>> distances = new List<Tuple<Point2d, double>>();

            foreach (var Point2d in intersections)
            {
                double dist = Tools.distance(MousePt.X, MousePt.Y, Point2d.X, Point2d.Y);
                distances.Add(new Tuple<Point2d, double>(Point2d, dist));
            }

            distances.Sort((a, b) => a.Item2.CompareTo(b.Item2));

            result.X = distances[0].Item1.X;
            result.Y = distances[0].Item1.Y;

            return result;
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值