ID3算法&C4.5算法
解释用例DT_data.csv为样本数据,共14条记录。每一条记录共4维特征,分别为Weather(天气), Temperature(温度),Humidity(湿度),Wind(风力);其中Date(约会)为标签列。 根据样本数据,建立决策树。输入测试数据,得到预测是否约会(yes/no)。 算法实现1. 计算熵(entropy)123456789101112131415double entropy(const vector<DataPoint>& data) { map<string, int> labelCount; for (const auto& d : data) { labelCount[d.date]++; } double entropy = 0.0; int total = data.size(); for (const auto& pair : labelCount) { double prob =...
Dijkstra 算法
解释用例一个学校平面图,至少包括10个以上的场所,每个场所带有编号、坐标、名称、类别等信息,两个场所间可以有路径相通,路长(耗时)各有不同。要求读取该校园平面图,查询各个场所信息,找出从任意场所到达另一场所的最短路径(最佳路径)。 算法实现1. 初始化数据结构123std::unordered_map<int, double> distances;std::unordered_map<int, int> previous;std::priority_queue<std::pair<double, int>, std::vector<std::pair<double, int>>, std::greater<>> minHeap; distances:存储从起始地点到每个其他地点的当前已知最短距离,初始化为无穷大。 previous:用于记录在最短路径中每个地点的前一个地点,以便最终回溯得到路径。 minHeap:优先队列,用于选择当前已知最短距离的地点,以便继续搜索。 2....
“杰伦斯基”算法(Graham's scan)
解释用例凸包是一种基础的几何结构,在地理信息科学领域广泛应用。给出一组平面上的点,构造出对应的凸包,并依次输出极点编号。 算法实现1. 计算最左边的点123QPoint p0 = *std::min_element(points.begin(), points.end(), [](const QPoint& p1, const QPoint& p2) { return p1.x() < p2.x();}); 目的:找到所有给定点中 x 坐标最小的点 p0。这是构建凸包时的起始点,通常作为基准点。 方法:使用 std::min_element 函数来寻找 points 的最小 x 坐标点。 2. 按照极角排序1234QVector<QPoint> sortedPoints = points;std::sort(sortedPoints.begin(), sortedPoints.end(), [p0](const QPoint& p1, const QPoint& p2) { ...