两个组合优化问题及算法

本文探讨了两个组合优化问题的解决策略,分别是数组排成最小数和资源调度问题。通过对相邻元素进行调整,借助比较原则的传递性,将问题转化为排序问题,从而找到最优解。对于数组问题,通过证明比较原则的传递性,使用类似冒泡排序的方法得到最小数字;对于资源调度问题,定义L值并证明其传递性,以确定最优请求顺序。
摘要由CSDN通过智能技术生成

最近看到两道编程题,有点意思,不过网上看了一下,虽然有一些人写出了算法,但是感觉算法思想表述的都不够清晰,特别是都是直接上结论,然后证明这么做是对的。

我不大喜欢这种表述方式,尝试着以更容易理解的"顺向思维",没错,不是什么"逆向思维",就是正常的思路来推导一下求解过程.

①把数组排成最小的数

输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。

http://blog.csdn.net/wuzhekai1985/article/details/6704902已经给出了算法过程,并且证明了算法是对的,这算法就是定义a与b的大小关系,若ab<ba,则a<b.然后按照这种定义的顺序把最小的排在最前边就行了.

那么,我们是如何想到这种算法的呢?

首先随便写出一个方案,我们考察这个方案是否能够优化,如果能应该怎么做?

比如给定一个方案bca,我们考虑这个数字能否通过优化变得更小呢?

考虑最简单易行的优化方式----相邻元素交换,如果bca的前两位交换顺序变为cba之后整个数字变小了,那么应该满足什么条件呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值