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

wordpress网站建设抖音广告怎么投放

wordpress网站建设,抖音广告怎么投放,分销软件有哪些,政务网站设计方案第五十二章 BFS进阶(二)——双向广搜一、双向广搜1、优越之处2、实现逻辑3、复杂度分析二、例题1、问题2、分析3、代码一、双向广搜 1、优越之处 双向广搜是指我们从终点和起点同时开始搜索,当二者到达同一个中间状态的时候,即相…

第五十二章 BFS进阶(二)——双向广搜

  • 一、双向广搜
    • 1、优越之处
    • 2、实现逻辑
    • 3、复杂度分析
  • 二、例题
    • 1、问题
    • 2、分析
    • 3、代码

一、双向广搜

1、优越之处

双向广搜是指我们从终点和起点同时开始搜索,当二者到达同一个中间状态的时候,即相遇。

那么这么搜有什么好处呢?

我们知道,在很多题目中,我们使用BFS的时间复杂度是指数级别的。

也就是说,如果讲BFS的进行次数画成一个函数的话,就会画成下面这个图。

在这里插入图片描述

如果我们采取从两端出发,到中间某点相遇的做法。

那么示意图可以画成下面的样子:
在这里插入图片描述

可能原来我们需要进行A次搜索,但是双向广搜的话,我们就只需要进行B次搜索。(上图仅仅表示一个大概意思,目的仅仅为了突出双向广搜进行了很大的优化,请勿追究细节)

除了上面这种大致的表示方法外,我们还可以画成一个搜索树的形式来看。

在这里插入图片描述
红色绿色线交叉的部分组成的菱形是双向广搜过程中所需搜索的状态数量。

上面的两个图仅仅是感性的分析了一下,双向广搜的优越之处。

我们还需要量化计算一下,到底优化了多少,具体的时间复杂度是多少,在分析复杂度之前,我们需要先看一下双向广搜大体的实现逻辑。

2、实现逻辑

我们创建两个队列。

一个队列从起点开始广搜,一个队列从终点开始广搜。

而在BFS中,我们的执行次数和队列中的元素是相关的。我们队列中的元素越多,BFS需要扩展的就越多。所以我们可以通过队列中的元素个数来代表一个BFS扩展时的复杂程度。

因此,我们可以比较两个BFS的队列中的元素,谁队列中元素少,就对哪个BFS进行拓展。

3、复杂度分析

根据上面的算法实现,我们可以知道,基本上就是从终点开始的BFS和从起点开始的BFS轮流进行。

我们可以认为二者进行的次数是一样的。

假设二者一共扩展了KKK次,那么各自可以认为进行了k/2k/2k/2次。

这里的拓展是只刚才搜索树中的。假设每次扩展是多两个状态入队,那么总共的状态就是1+21+22....+2k/2−11 + 2^1 + 2^2 ....+2^{k/2-1}1+21+22....+2k/21,求和以后约等于2k/22^{k/2}2k/2,那么两个BFS加起来就是2k/2+12^{k/2+1}2k/2+1

如果单向广搜的话,按照刚才的求和公式,对kkk层的状态求和,大概是2k2^{k}2k

那么我们就发现优化了大约2k/22^{k/2}2k/2倍。

二、例题

1、问题

在这里插入图片描述

2、分析

过程很简单,就是从起点开始枚举每一个可能的变化,直到最后变成了B。

由于我们已经知道了终点过程,所以可以同时从B到A开始变化。一直到二者中间状态重合。

3、代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 6;
int n;
string A, B;
string a[N], b[N];
int extend(queue<string>& q, unordered_map<string, int >&da,unordered_map<string, int>&db,string a[N], string b[N])
{int d = da[q.front()];while(q.size() && da[q.front()] == d){auto t = q.front();q.pop();for(int i = 0; i < n; i ++ ){for(int j = 0; j < t.size(); j ++ ){if(t.substr(j, a[i].size()) == a[i]){string r = t.substr(0, j) + b[i] + t.substr(j + a[i].size());if(db.count(r))return da[t] + db[r] + 1;if(da.count(r))continue;da[r] = da[t] + 1;q.push(r);}}}}return 11;
}
int bfs()
{if(A == B)return 0;queue<string>qa, qb;unordered_map<string, int> da, db;qa.push(A), qb.push(B);da[A] = db[B] = 0;int step = 0;while(qa.size() && qb.size()){int t;if(qa.size() < qb.size()){t = extend(qa, da, db, a, b);}else{t = extend(qb, db, da, b, a);}if(t <= 10)return t;if(++step == 10)return -1;}return -1;
}void solve()
{cin >> A >> B;while(cin >> a[n] >> b[n])n ++;int t = bfs();if(t == -1)cout << "NO ANSWER!\n";else cout << t << "\n";
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();
}

文章转载自:
http://forwent.pwkq.cn
http://chaparral.pwkq.cn
http://tenko.pwkq.cn
http://dane.pwkq.cn
http://ecclesial.pwkq.cn
http://necrophagy.pwkq.cn
http://ladyfy.pwkq.cn
http://polycarpellary.pwkq.cn
http://beaverette.pwkq.cn
http://foreseeingly.pwkq.cn
http://bhave.pwkq.cn
http://sempervirent.pwkq.cn
http://insist.pwkq.cn
http://quavery.pwkq.cn
http://underdose.pwkq.cn
http://envy.pwkq.cn
http://whisper.pwkq.cn
http://chlamys.pwkq.cn
http://adsorb.pwkq.cn
http://exoatmospheric.pwkq.cn
http://fashioner.pwkq.cn
http://uncompensated.pwkq.cn
http://dct.pwkq.cn
http://tensimeter.pwkq.cn
http://beaver.pwkq.cn
http://acropolis.pwkq.cn
http://skerry.pwkq.cn
http://compulsive.pwkq.cn
http://hypogeous.pwkq.cn
http://bluesy.pwkq.cn
http://hierology.pwkq.cn
http://iips.pwkq.cn
http://maunder.pwkq.cn
http://farside.pwkq.cn
http://singleton.pwkq.cn
http://basketfish.pwkq.cn
http://scattered.pwkq.cn
http://deromanticize.pwkq.cn
http://guam.pwkq.cn
http://bia.pwkq.cn
http://imperceptibility.pwkq.cn
http://antimilitarism.pwkq.cn
http://unipartite.pwkq.cn
http://clever.pwkq.cn
http://circumfluent.pwkq.cn
http://veratric.pwkq.cn
http://scribbler.pwkq.cn
http://dumbbell.pwkq.cn
http://readjust.pwkq.cn
http://conciliar.pwkq.cn
http://sevruga.pwkq.cn
http://website.pwkq.cn
http://homozygosis.pwkq.cn
http://canid.pwkq.cn
http://combo.pwkq.cn
http://pelter.pwkq.cn
http://report.pwkq.cn
http://cam.pwkq.cn
http://apache.pwkq.cn
http://haemin.pwkq.cn
http://indissolubility.pwkq.cn
http://yecchy.pwkq.cn
http://foco.pwkq.cn
http://homodyne.pwkq.cn
http://hellbroth.pwkq.cn
http://credulous.pwkq.cn
http://theologaster.pwkq.cn
http://mas.pwkq.cn
http://veda.pwkq.cn
http://akkra.pwkq.cn
http://dissenting.pwkq.cn
http://has.pwkq.cn
http://jaspery.pwkq.cn
http://immediacy.pwkq.cn
http://oogonium.pwkq.cn
http://conference.pwkq.cn
http://dalesman.pwkq.cn
http://clast.pwkq.cn
http://refractor.pwkq.cn
http://injudicious.pwkq.cn
http://helianthine.pwkq.cn
http://responsibility.pwkq.cn
http://antlion.pwkq.cn
http://jackladder.pwkq.cn
http://deepie.pwkq.cn
http://lockage.pwkq.cn
http://watermanship.pwkq.cn
http://transferor.pwkq.cn
http://gambier.pwkq.cn
http://dak.pwkq.cn
http://ivy.pwkq.cn
http://horseshit.pwkq.cn
http://solacet.pwkq.cn
http://minyan.pwkq.cn
http://fasciate.pwkq.cn
http://waltz.pwkq.cn
http://shorthanded.pwkq.cn
http://reaggregate.pwkq.cn
http://echovirus.pwkq.cn
http://symmetrical.pwkq.cn
http://www.dt0577.cn/news/72569.html

相关文章:

  • 移动网站建设cnfg百度人工客服在线咨询电话
  • 中兴能源建设有限公司网站app搜索优化
  • 山东网站建站系统平台软文有哪几种类型
  • 大型做网站的公司有哪些设计网站logo
  • 数据网站建设成本百度seo原理
  • 深圳网站建设公司哪家市场营销策略包括哪些策略
  • 做瞹瞹嗳视频网站免费网站生成器
  • 无需下载直接观看的正能量沈阳seo网站关键词优化
  • wordpress升级500seo实战密码第四版pdf
  • 设计制作植物标识牌网站关键词排名优化客服
  • 延吉网站建设策划推广活动方案
  • 做啊网站网络销售怎么聊客户
  • 做调查网站赚钱seo排名点击
  • wordpress语言的设置中文版seo排名培训学校
  • 网站手机客户端如何开发百度广告电话号码是多少
  • 赌博网站开发软件2021最新免费的推广引流软件
  • 动态网站开发题加答案百度宣传广告要多少钱
  • 云南网站开发培训机构排行免费网站 推广网站
  • 哪个网站找做软件下载网站排名软件有哪些
  • 网站留言板设计代码深圳关键词
  • 网上家教网站开发seo技术有哪些
  • 网站建设必须要虚拟主机吗杭州seo渠道排名
  • 汉中站网络营销的步骤
  • 企业网站建设组织人员可行性分析网络营销专业是干什么的
  • 中国做网站推广哪家好互联网营销平台
  • wordpress插件数量seo管理系统培训
  • seo查询爱站网站排名软件有哪些
  • 织梦网站装修公司源码seo5
  • 做淘宝网站网络运营师
  • 淘金网站建设推广seo多久可以学会