最小长度电路板排列问题(分支限界法)

这篇具有很好参考价值的文章主要介绍了最小长度电路板排列问题(分支限界法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

最小长度电路板排列问题,# 分支限界法,算法,c++,数据结构,分支限界法

最小长度电路板排列问题,# 分支限界法,算法,c++,数据结构,分支限界法

思路:

分支限界法求最佳排列。

具体细节见注释。文章来源地址https://www.toymoban.com/news/detail-772645.html

Code:

#include<bits/stdc++.h>
using namespace std;

int n, m;
int bestx[10];// 这是最终的最优解排列顺序
int B[10][10];//电路板在连接块中的排列,是一个二维数组
int x[10], low[10], high[10];// 分别是当前的排列、最左边电路板、最右边电路板
int bestd = 0;// 最优解

int len(int ii){// 计算当前ii排列最小长度
	for(int i = 1; i <= m; i ++ ){
		high[i] = 0;
		low[i] = n + 1;// 先初始化最左边和最右边的值,
	}
	for(int i = 1; i <= ii; i ++ )// 对于第i行
		for (int k = 1; k <= m; k ++ )// k列
			if(B[x[i]][k] > 0){// 如果第i个电路板在第k个连接块中,
				if(i < low[k])//low[k]代表第K个连接块的最左边的值,如果i比它小,则更新左值
					low[k] = i;
				if(i > high[k])
					high[k] = i;//如果比初始的右值大,则更新右值
			}
	int tmp = 0;
	for(int k = 1; k <= m; k ++ )
		if(low[k] <= n && high[k] > 0 && tmp < high[k] - low[k])
			tmp = high[k] - low[k];//计算每个连接块的举例
	return tmp;
}
void swap(int* x, int i, int j){// 交换i和j位置的值
	int tmp;
	tmp = x[i];
	x[i] = x[j];
	x[j] = tmp;
}
void backtrack(int i){
	if(i == n){// 如果到达末尾
		int tmp = len(i);// 计算当前排列最小长度
		if(tmp < bestd){
			bestd = tmp;
			for(int j = 1; j <= n; j ++ )
				bestx[j] = x[j];
		} // 如果比最优解还要好,则更新bestx[]排列;
	} 
	else{// 若不是末尾;
		for(int j = i; j <= n; j ++ ){
			swap(x, i, j);
			int ld = len(i);
			if(ld < bestd)
				backtrack(i + 1);// 则继续进入下一个数,
			swap(x, i, j);
		}
	}
}

int arrangeBoards(){
	bestd = n + 1;// 先假设一个很大的值
	for(int i = 1; i <= n; i ++ )
		x[i] = i;// 这里是最开始的排序;
	backtrack(1);
	return bestd;
}

int main(){
	
	cin >> n;
	cin >> m;

	vector<int> temp(m);

	for(int i = 1; i <= n; i ++ ){
		for (int j = 1; j <= m; j ++ ) {
			cin >> B[i][j] ;// 输入的电路板的二维数组排列
		}
	}
	
	int minLen = arrangeBoards();
	cout << minLen << endl;
	
	for(int i = 1; i <= n; i ++ )
		cout<<bestx[i]<<" ";
		
	return 0;
}

 代码运行截图:

最小长度电路板排列问题,# 分支限界法,算法,c++,数据结构,分支限界法

到了这里,关于最小长度电路板排列问题(分支限界法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LabVIEW电路板插件焊点自动检测系统

    LabVIEW电路板插件焊点自动检测系统 介绍了电路板插件焊点的自动检测装置设计。项目的核心是使用LabVIEW软件,开发出一个能够自动检测电路板上桥接、虚焊、漏焊和多锡等焊点缺陷的系统。 系统包括成像单元、机械传动单元和软件处理单元。首先,利用工业相机和特定光源

    2024年01月24日
    浏览(35)
  • ​#立夏# 气温升高,3招提高电路板的散热效率!

    电路板是电子设备的核心,上面安装了各种元器件,如电阻、芯片、三极管等。这些元器件在工作时都会产生一定的热量,从而使电路板的温度升高。如果不及时将这些热量散发出去,电路板就会过热,影响元器件的性能、可靠性和寿命。因此,对电路板进行有效的散热处理

    2024年02月03日
    浏览(27)
  • lora芯片PCB电路板影响接受信号的原因汇总

    Lora 芯片的 PCB 板受力接收信号有问题可能有以下原因: 电路板设计问题:电路板的设计不合理可能导致信号接收出现问题。例如,电路板的天线布局、走线可能影响到信号的接收效果。在设计电路板时,需要考虑到天线的布局、走线、接地等细节,以确保信号接收的稳定性

    2024年02月12日
    浏览(34)
  • 【缺陷检测】计算机视觉PCB电路板缺陷检测【含Matlab源码 2709期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年01月18日
    浏览(32)
  • DRC错误检查、Gerber光绘文件输出、电路板设计中的高级技巧

    DRC错误检查 Gerber光绘文件输出 电路板设计中的高级技巧 1.display status 2.DRC错误排除——线到线的间距错误 3.DRC错误排除——线宽的错误 display-status unplaced symbols:未放置器件,点击色块可以知道是哪些器件没有放置。 解决方法:place-manually-placement list中勾选器件放置 unrouted

    2024年02月07日
    浏览(40)
  • 干货|PCB电路板的组成、设计、工艺、流程及元器摆放和布线原则

        大家对PCB电路板电路这个词很熟,有的了解PCB电路板的组成,有的了解PCB电路板的设计步骤,有的了解PCB电路板的制作工艺......但是对整个PCB电路板的组成、设计、工艺、流程及元器件摆放和布线原则,及后期的注意事项没有一个综合的了解。好吧,海翎光电的小编把这

    2024年02月06日
    浏览(33)
  • PCB电路板Via、Pad孔的区分与安装孔、定位孔、金属孔、非金属孔的制作

    笔者最近制作PCB电路板,要装在公司设计的结构上,所以必须打孔。各种各样的孔可把笔者愁坏了,到底该用哪一种好呢。问了一些老师傅还有看了网上的教程,把这一部分弄懂了,现在介绍给大家。 Via孔的特点是打孔的板边缘肯定有一层金属覆盖,并且孔的外围没有金属。

    2024年02月09日
    浏览(60)
  • 大厂秋招真题【BFS+DP】华为20230921秋招T3-PCB印刷电路板布线(留学生专场)

    在PCB印刷电路板设计中,器件之间的连线,要避免线路的阻抗值增大,而且器件之间还有别的器任和别的干扰源,在布线时我们希望受到的干扰尽量小。 现将电路板简化成一个 M × N 的矩阵,每个位置(单元格)的值表示其源干扰度。 如果单元格的值为 0 ,表示此位置没有干

    2024年02月07日
    浏览(36)
  • 分支限界TSP(旅行商问题)

    【问题】 TSP 问题(traveling salesman problem) 是指旅行家要旅行 n 个城市, 要求各个城市经历且仅经历一次然后回到出发城市, 并要求所走的路程最短。 【想法】 首先确定目标函数的界[down, up], 可以采用贪心法确定 TSP 问题的一个上界。 如何求得 TSP 问题的一个合理的下界呢

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包