当前位置: 首页 > news >正文

网站怎么建设火脉推广平台

网站怎么建设,火脉推广平台,wordpress导入演示,建设银行+贷款+查询+网站双向DFS 定义 双向深度优先搜索#xff08;Bi-directional Depth First Search, BD-DFS#xff09;是一种在图或树中寻找两点间路径的算法。与传统的单向DFS不同#xff0c;BD-DFS同时从起始节点和目标节点出发进行搜索#xff0c;使用两个DFS过程。一个向前探索从起点到…双向DFS 定义 双向深度优先搜索Bi-directional Depth First Search, BD-DFS是一种在图或树中寻找两点间路径的算法。与传统的单向DFS不同BD-DFS同时从起始节点和目标节点出发进行搜索使用两个DFS过程。一个向前探索从起点到中间状态的路径另一个向后探索从终点到相同中间状态的路径。当两个搜索的前沿相遇时即可找到一条从起点到终点的路径。 运用情况 优化搜索效率当搜索空间非常大时双向搜索可以显著减少搜索的总节点数因为每个方向上的搜索都不需要遍历完整个空间。明确初态和终态适用于已知明确的起始状态和结束状态的问题如某些迷宫问题、最短路径问题等尤其是当两个状态之间的距离较远时。求解最短路径在某些情况下如求解有界范围内的最短路径问题双向DFS配合剪枝策略能有效降低时间复杂度。状态空间对称性当搜索空间存在某种对称性且从两端开始搜索能更快相遇时使用双向DFS更为高效。 注意事项 空间利用需要额外的数据结构来存储两个方向的搜索状态以及可能的中间状态匹配。状态匹配设计有效的数据结构如哈希表来快速判断两个搜索过程中的状态是否匹配这是算法成功的关键。剪枝合理设置剪枝条件避免重复搜索和无效扩展尤其是在状态空间较大的情况下。同步控制两个方向的搜索需要适当同步确保不会错过可能的交汇点特别是在动态规划或状态压缩场景下。 解题思路 初始化分别从起点和终点开始进行DFS并记录已访问的状态。状态标记与存储对每个访问的状态进行标记防止重复访问并将这些状态存储起来以便后续比较。中间状态匹配设计机制检查两个搜索过程中生成的状态是否有交集。这可以通过维护两个集合并在每次扩展状态时检查是否存在交集来实现。收敛一旦发现交集即找到了从起点到终点的路径。此时可以通过回溯或保存的路径信息来重构完整的路径。优化根据问题特性考虑使用启发式信息、剪枝策略等进一步优化搜索过程尤其是在搜索空间较大时。 AcWing 171. 送礼物 题目描述 171. 送礼物 - AcWing题库 运行代码 #include iostream #include algorithm #include vector using namespace std; typedef long long LL; const int N 1 24;int n, m, k; int g[50], weights[N]; int cnt 0; int ans;void dfs(int u, int s) {if(u k){weights[cnt ] s;return;}if((LL) s g[u] m) dfs(u 1, s g[u]);dfs(u 1, s); }void dfs2(int u, int s) {if (u n){int l 0, r cnt - 1;while (l r){int mid l r 1 1;if (weights[mid] (LL)s m) l mid;else r mid - 1;}if (weights[l] (LL)s m) ans max(ans, weights[l] s);return;}if ((LL)s g[u] m) dfs2(u 1, s g[u]);dfs2(u 1, s); }int main() {cin m n;for(int i 0; i n; i ) cin g[i];sort(g, g n, greaterint());k n / 2;dfs(0, 0);sort(weights, weights cnt);int t 1;for (int i 1; i cnt; i )if (weights[i] ! weights[i - 1])weights[t ] weights[i];cnt t;dfs2(k, 0);cout ans endl;return 0; } 代码思路 输入处理与预处理读取背包最大承重m和物品数量n以及每个物品的重量g[]。然后按重量从大到小排序物品以利于贪心策略。 前向DFS (dfs函数)从物品集合的前半部分n/2个物品开始计算所有可能的子集重量并存储在weights[]数组中。这个步骤利用了深度优先搜索遍历所有组合。 排序与去重对weights[]数组进行排序并去除重复的重量值以便于二分查找。 后向DFS (dfs2函数)从物品集合的后半部分开始对每个可能的子集重量加上当前累计重量s并使用二分查找在前半部分得到的子集重量中寻找合适的配对更新最大总重量ans。 输出结果输出最终得到的最大总重量。 改进思路 记忆化搜索虽然原始代码没有直接使用但考虑到DFS的递归调用如果遇到更复杂的约束或更大规模的问题引入记忆化可以避免重复计算提高效率。 迭代代替递归DFS递归可能导致栈溢出对于大规模问题可以考虑使用迭代方式如栈模拟替代递归。 更高效的搜索算法对于背包问题动态规划(DP)通常比DFS更高效。此问题可以考虑使用二维DP数组其中dp[i][j]表示前i个物品中选取总重量不超过j的最大价值这里价值即重量。但由于需要分两部分考虑可以先DP计算前半部分所有可能的组合再基于这些组合结果对后半部分做优化搜索。 剪枝优化在DFS过程中可以通过剪枝策略进一步减少不必要的搜索比如在前向或后向DFS中如果当前路径的重量已经不可能超过当前最优解则停止该分支的搜索。
http://www.pierceye.com/news/409093/

相关文章:

  • 营销型网站建设流程电脑怎么建网站
  • 郑州市汉狮做网站360免费建站
  • 安阳哪里有学做网站的学校做个公众号需要多少钱
  • 建站seo是什么成都做营销型网站
  • 网站建设哪个wordpress分类title
  • 建手机网站多少钱挂机软件定制
  • 网站建设 提案 框架河南一般建一个网站需要多少钱
  • 福建省建设人才市场网站深圳营销型网站建设优化
  • 晋城购物网站开发设计宣传网站有哪些
  • 在哪人网站要以接it项目做企业为什么要分析环境
  • 达令的网站建设wordpress上传视频
  • 织梦免费网站模块下载地址南充楼盘网
  • 深圳极速网站建设服务器做网站 然后百度推广
  • 西充县住房和城乡建设局网站深圳建设局网站打不开
  • 深圳常平网站建设制作公司网站开发qq群
  • 校园网站建设的感受论文专业微信网站建设公司首选
  • 国外免费logo设计网站免费网课平台
  • 高端网站设计定制公司页面跳转自动更新
  • 项目建设资金来源网站网站开发技术可以做什么工作
  • 可做易企秀的网站网页建站网站
  • 南京网站建设价格大型网站开发协调
  • 园林景观设计公司点评的网站和论坛大型网站搜索怎么做的
  • 河南省建设教育培训中心网站广告机器设备的价格表
  • 郑州做网站哪家最好中国能源建设集团有限公司是什么级别
  • 品牌设计公司排行榜前十名seo外包服务公司
  • 潍坊网站建设 58wordpress 酒店预订
  • 个人网站主机选择电商公司官网
  • 名城苏州网站龙岗网站建设价位
  • 免费手机网站制作学做网站游戏教程
  • 什么企业做网站广州市公司网站建设