首先我的结对伙伴给我提出了一个这样的问题: 使用分支界限法求解"背包问题"的步骤. 当时我是这样回答他的: ub=v+(W-w)x(v(i+1)/w(i+1)) 这个问题我在课上也没有理解清楚,因为我不知道ub是怎么算出来的...(虽然公式给了我,但我还是不理解)所以我准备周五去问问小助教这个问题如何求解,问题答案将在这周博客内容里体现. 我问过小助教之后,他从PPT下拉出来了备注(我居然忽略了备注) 于是我就把电脑抱回去自己看了. 对于分支界限法的疑惑 1.ub是什么,为什么背包没装…
对"构建之法"的理解和困惑        本人"学沫沫"一个,对于之前的编程学习虽不大"感冒",但秉着对自己负责的态度进行了基础学习.        在这个充满代码程序的大学生活中,从"Hello Word !"到一个小程序的完整运行,总有修改无数次代码仍ERROR让我抓狂的时候,相对的,也有几经波折才显示结果的时候,虽然有时就显示出来一部分,但那时的心情简直比新番(I'm 动漫迷)每周更新时还激动.Give them a t…
@2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_timeout - current_tick) < RT_TICK_MAX / 2) --- 条件1 rt_soft_timer_check(void)函数中if ((current_tick - t->timeout_tick) < RT_TICK_MAX / 2) --- 条件2 举个特…
本文主要记录了对git日常使用的一些理解,主要是对git分支的一些感悟. git强大的版本控制系统,之前也使用过SVN,感觉上git对于多人开发的版本控制更加强大,特别是最近对git分支的使用,更是深有体会. git的分支使用,假设场景,多人开发的时候,对于一个页面,前端写好后给后端,而后端放到服务器上后,前端要做出修改,后端也要做修改,这时候,就两个人就可以从主分支上切出不同的分支,分别单独开发. 1,从主分支上切出新分支,假设主分支是dev: 命令:git checkout -b new_c…
一.问题描述 描述 在一个操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆.规定在合并过程中最多可以有m(k)次选k堆石子合并成新的一堆,2≤k≤n,合并的费用为新的一堆的石子数.试设计一个算法,计算出将n堆石子合并成一堆的最小总费用. 对于给定n堆石子,计算合并成一堆的最小总费用. 输入 输入数据的第1 行有1 个正整数n(n≤100),表示有n 堆石子.第2行有n个数,分别表示每堆石子的个数.第3 行有n-1 个数,分别表示m(k)(2≤k≤n)的值. 输出Output 将计算出的最小…
catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向循环链表 数组链表 链表数组 二维链表 3.2 顺序存储 . 算法 4.1 查找算法 4.2 排序算法 0. 引论…
第1章 绪论 1.1 什么是算法 1.2 算法问题求解基础 1.2.1 理解问题 1.2.2 了解计算设备的性能 1.2.3 在精确解法和近似解法之间做出选择 1.2.4 算法的设计技术 1.2.5 确定适当的数据结构 1.2.6 算法的描述 1.2.7 算法的正确性证明 1.2.8 算法的分析 1.2.9 为算法写代码 1.3 重要的问题类型 1.3.1 排序 1.3.2 查找 1.3.3 字符串处理 1.3.4 图问题 1.3.5 组合问题 1.3.6 几何问题 1.3.7 数值问题 1.4…
开篇 这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索. 对于入门的好文章不多,而这篇文章就是为初学者而写的,很适合入门的一篇.文章定位:非专业性A*文章,很适合入门. 有图有真相,先给大家看个效果图吧:从图的左下角到右上角寻找最短路径,灰色部分是障碍物. 这是用一般的搜素方法,类似穷举的效果 下面的图是用A*搜素的效果,也就是本文要介绍的算法. 可以看出,用A*算法减少了许多计算量,它的效率有了显著的提高. 下面将为你解答上图中的算法是如何实现的. 图片来源:http://en.…
旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路.它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要. 分支限界法在上一篇Blog中我有简单说明,并给出了基于分支界限法的Dijkstra ,这篇文章里介绍一下基于分支限界法的TSP算法. 对于TSP,我们需要利用上界和下界来对BFS进行剪枝,通过不断更新上界和下界,尽可能的排除不符合需求的ch…
分支限界法定义:采用Best fist search算法,并使用剪枝函数的算法称为分支界限法. 分支限界法解释:按Best first的原则,有选择的在其child中进行扩展,从而舍弃不含有最优解的分支,不断重复这一过程,直到找到答案或者判定无解. 分支界限法常常用到优先队列来选择最佳扩展节点,有时也会用到普通队列,以先进先出为原则来进行筛选. 单源最短路问题定义:给定有向图和起点,寻找到达所有点的最短路径. 单源最短路的分支限界法概述:首先把节点加入优先队列,以到当前节点的最短路为下界,之后不…
1.问题.问题实例.算法的概念区分. 一个例子说明一下: 问题:判断一个正整数N是否为素数   #问题是需要解决的一个需求 问题实例:判断1314是否为素数? #问题实例是该问题的一个具体例子 算法:解决这个问题的一个计算过程描述.   #算法是对计算过程的严格描述 2.算法的性质. 有穷性.能行性.确定性.终止性.输入/输出. 3.算法的描述 自然语言(容易歧义) 自然语言+数学公式(简单方便,还是歧义) 严格形式描述(比如图灵机模型,非常麻烦,难以阅读) 类似编程语言描述 伪代码的形式 该书…
代码: 个人浅薄的认为DFS就是回溯法中的一种,一般想到用DFS我们脑中一般都有一颗解法树,然后去按照深度优先搜索去寻找解.而分支界限法则不算是回溯,无论其是采用队列形式的还是优先队列形式的分支界限法. 下面这个函数就是我的DFS的函数,先介绍一下参数的含义,index表示当前要判断是否合适的candidates中的元素的下标,t表示即将要把新数据加入的位置. void backTrace(int sum, int target, int a[], int index, int t, vecto…
1 .1 第 1 章─概论   1.1.1 练习题   1 . 下列关于算法的说法中正确的有( ).   Ⅰ Ⅱ Ⅲ Ⅳ .求解某一类问题的算法是唯一的   .算法必须在有限步操作之后停止   .算法的每一步操作必须是明确的,不能有歧义或含义模糊   .算法执行后一定产生确定的结果   A. 1 个   B.2 个   C.3 个   D.4 个   2 . T(n)表示当输入规模为 n 时的算法效率,以下算法效率最优的是( ).   A.T(n)= T(n-1)+1,T(1)=1   C.T(…
算法一:分治法 基本概念 1.把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并. 2.分治策略是对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解. 适用情况 1)该问题的规模缩小到一定的程度就可以容易地解决 2)该问题可以分解为若干个规模较小的…
一. TSP问题数学模型 编辑 TSP,即Traveling Salesman Problem,也就是旅行商问题,又译为旅行推销员问题.货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本.最早的旅行商问题的数学规划是由Dantzig(1959)等人提出.   二. 有时间窗车辆路径问题 编辑 有时间窗车辆路径问题(vehicle routing problems with time windows,VRPT…
乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本.对于大项目来说,这样的过程会耗费很多时间. 分支简介 为了真正理解 Git 处理分支的方式,我们需要回顾一下 Git 是如何保存数据的. 或许你还记得 起步 的内容,Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照. 在进行提交操作时,Git 会保存一个提交对象(commit o…
一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以blob的形式分别存储在数据库中(.git/objects),并用SHA-1值来校验. 索引文件用识别码列出相关的blob文件以及别的数据.对于提交来说,以树(tree)的形式存储,同样用对于的哈希值识别.树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着…
解决同伴问题 要求: 查看同组同学的课堂笔记,尝试解决同伴的问题,格式如下: 我的同组同学是XXXX学号XXXX同学 同组同学的问题是XXXX 我理解他的意思是XXXX 他的问题我有一个小建议是XXXXX 其他(可选) 解答: 我的同组同学是20162324学号春旺同学 同组同学的问题是 :回溯法与分支限界法的区别 我理解他的意思是:寻找这两个方法的不同 他的问题我有一个小建议是: 1.在一般情况下,分支限界法与回溯法的求解目标不同. 回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法…
[译] 深入理解 iptables 和 netfilter 架构 Published at 2019-02-18 | Last Update 译者序 本文翻译自 2015 年的一篇英文博客 A Deep Dive into Iptables and Netfilter Architecture . 这篇对 iptables 和 netfilter 的设计和原理介绍比较全面,美中不足的是没有那张 内核协议栈各 hook 点位置和 iptables 规则优先级的经典配图,这里补充如下(来自 Wiki…
python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩打印出来和最后排序对比看,函数方法bubbie_sort冒泡排序,count计数也就是列表长度len(列表),第一个for循环取列表中的第一个值然后向后位移,第二个for循环取列表i+1也就是第二个值向后位移,这表是第二个for只会取第一个for后面的值好做比较,count长度一直15,如果两个不一…
下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原始网格融合.算法的主要步骤如下: 1-检测孔洞边界并初始化补洞网格 2-调整补洞网格 2.1-计算补洞网格中顶点的期望法向 2.2-基于期望法向旋转补洞网格中的三角面片 2.3-基于Poisson方程调整补洞网格顶点位置 下面分别介绍算法中每一步的具体过程: 1:检测孔洞边界并初始化补洞网格 检测孔…
摘自Jack__CJ  CSDN博客,写得很好,保存一下. 导读 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程--常常需要完全创建一个源代码目录的副本.对于大项目来说,这样的过程会耗费很多时间. 1.1 Git 分支 - 分支简介 有人把 Git 的分支模型称为它的"必杀技特性",也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如…
1. 介绍分支界定法之前需要了解一下广度优先搜索breadth-First-search(BFS) 1.从图中某个顶点V0出发,并访问此顶点:以层为顺序,一层一层往下遍历 2.从V0出发,访问V0的各个未曾访问的邻接点W1,W2,-,Wk;然后,依次从W1,W2,-,Wk出发访问各自未被访问的邻接点 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型.Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想.其别名…
<构建之法>阅读有疑 在用将近五节课的时间将邹欣老师的书<构建之法——现代软件工程>第二版大致看完.虽然全书是以轻松的口吻与”移山公司”员工的一些趣味谈话来传输一些理念和思想的,但是读完并理解依旧不是一件很容易的事情,并且在这过程中我对书中的一些看法抱有怀疑的态度,现将问题所在列在下面. P68页:我不是很认同邹老师的“精通”魔方的判定方法.就好像在软件工程开发中,一个人解决了一个bug.解决了bug却不算是“精通”,还得能恢复bug,再现bug才算是懂得各中原理吗?我觉得作为一个…
Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到有用到的朋友们--- 废话不多说,下面开始操作. gerrit分支操作常用的命令可以参考:http://www.cnblogs.com/kevingrace/p/5690820.html ———————————————————————————— 首先,利用gitlab进行创建分支 登陆gitlab,…
String Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1512    Accepted Submission(s): 668 Problem Description Give you a string with length N, you can generate N strings by left shifts…
原文地址: http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php 基础正规表示法 既然正规表示法是处理字串的一种表示方式,那么对字节排序有影响的语系数据就会对正规表示法的结果有影响! 此外,正规表示法也需要支持工具程序来辅助才行!所以,我们这里就先介绍一个最简单的字串撷取功能的工具程序,那就是 grep 罗! 前一章已经介绍过 grep 的相关选项与参数,本章著重在较进阶的 grep 选项说明罗! 介绍完 grep 的功能之后,就…
原文:深入理解C指针之四:指针和数组 数组是C内建的基本数据结构,数组表示法和指针表示法紧密关联.一种常见的错误认识是数组和指针完全可以互换,尽管数组名字有时可以当做指针来用,但数组的名字不是指针.数组和指针的区别之一就是,尽管数组的名字可以返回数组地址,但是名字不能作为赋值操作的目标. 概述 数组是能用索引访问的同质元素连续集合.数组的元素在内存中是相邻的,而且元素都是同一类型的.数组的长度是固定的,realloc函数和变长数组提供了应对长度需要变化的数组的技术. 一维数组是线性结构,用一个索…
源地址:https://git-scm.com/book/zh/ch3-1.html 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本.对于大项目来说,这样的过程会耗费很多时间. 有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分…
当我们初始化Git仓库的时候,Git会默认创建一个名为master的主分支.在实际工作中,主分支要求是一个稳定.健壮.安全的主线,一般不允许在主分支上直接进行开发,而是拉取一个新的分支,开发.测试完成后,再将分支合并到主分支上. 使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间. Git 的分支模型可称为"必杀技特性",而正是因为该特性将 Git 从版本控…