算法编题
程序题
轻舟一曲
这个作者很懒,什么都没留下…
展开
-
2021-04-11
树状数组 是什么 树状数组,又叫二叉索引树(BIT,Binary Indexed Tree),以其发明者命名为Fenwick树。其初衷是解决数据压缩里累计频率的计算问题,现多用于高效计算数列的前缀和,区间和。 累计频率 索引+分治 要求前缀和:只需要考虑前找规律即可。 取最后一个1: 单点更新 向右边找: 总结 树状数组用于求解给定数组中任意区间的累计频率(前缀和,区间和),支持单点更新,不支持增加和删除元素。 树状数组的本质也是一个数组,根据元素额索引建立里“逻辑上的”树形结构,元素之间原创 2021-04-11 12:11:35 · 45 阅读 · 0 评论 -
Prolog编程求解图搜索问题
实验题目 Prolog安装及基本用法 Prolog安装: 实验环境:Ubuntu20.04 在终端键入sudo apt-get install swi-prolog完成Prolog环境的安装。 安装成功后,键入swipl XXX.pl执行程序。 Prolog基本用法: (1)介绍: Prolog是一种声明式逻辑编程语言。 Prolog 所有语句的结尾都用一个"点"(.)表示结束。换行,可以使用nl命令。退出 SWI-Prolog,可以使用halt命令。 (2)常量和变量 Prolog 的变量和常量规则很简原创 2020-12-07 12:18:53 · 1283 阅读 · 0 评论 -
Eight皇后问题
回溯法求解八皇后问题问题描述算法解析 问题描述 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 算法解析 1、使用3个一维数组表示皇后的位置, 左斜(差相等,可加8使其值变为正数) 直竖(纵坐标相等) 右斜(和相等) 2、假设前i-1行的皇后已经按照规则排列好, 那么可以使用回溯法逐个试出第i行皇后的合法位置, 所有皇原创 2020-11-22 11:56:28 · 82 阅读 · 0 评论 -
Traveling Salesman Problem
利用遗传算法求解 TSP(旅行商)问题介绍选择算子交叉算子变异算子 介绍 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据原创 2020-11-22 11:01:30 · 345 阅读 · 0 评论