AOE 네트워크 의 핵심 경 로 를 구하 세 요.
(2) 공 사 를 완성 하 는 가장 짧 은 시간: AOE 네트워크 에서 활동 이 병행 되 기 때문에 공 사 를 완성 하 는 가장 짧 은 시간 은 시작 점 에서 완성 점 까지 의 가장 긴 길이 이다.(3) 활동 최초 시작 시간 (earlist time) (e (i)): 시작 점 에서 정점 vi 까지 의 가장 긴 경 로 를 사건 vi 의 최초 발생 시간 이 라 고 합 니 다.
이 시간 은 vi 를 끝 으로 하 는 아크 로 표 시 된 활동 의 최초 시작 시간 을 결정 합 니 다. (4) 활동 의 가장 늦 은 시작 시간 (latest time) (l (i): 전체 공사 의 완성 을 미 루 지 않 는 전제 에서 활동 이 가장 늦게 시작 되 는 시간 (5) 활동 을 완성 하 는 시간 여 유량: 이 활동 의 가장 늦 은 시작 시간 에서 가장 빠 른 시작 시간 (6) 관건 적 인 경로 (critical path) 를 줄 입 니 다.: 경로 길이 가 가장 긴 경 로 를 관건 적 인 경로 (7) 관건 적 인 활동 (critical activity) 이 라 고 한다. 관건 적 인 경로 에서 의 활동 을 관건 적 인 활동 이 라 고 한다. 관건 적 인 활동 의 특징 은 e (i) = l (i) 이 관건 적 인 경 로 를 분석 하 는 목적 은 전체 공사 에서 어떤 것 이 관건 적 인 활동 인지 판별 하여 관건 적 인 활동 의 업무 효율 을 향상 시 키 고 전체 공사 의 공사 기한 을 단축 시 키 는 것 이다.
파일 "aoe. h"
#include
#include
#include
#include
using namespace std;
const int MAX_VEX_NUM=20;
int ve[20];// ,
class ArcNode //
{
public:
int adjvex;
int info;//
ArcNode *nextarc;
};
class VNode //
{
public:
string data;
int indegree; //
ArcNode *firstarc;
};
class ALGraph
{
private:
VNode vertices[MAX_VEX_NUM];
int arcnum;
int vexnum;
public:
void Create_ALG()
{
//
string v1,v2;
int i,j,w;
ArcNode *p=NULL;
cout<>vexnum>>arcnum;
cout<>vertices[i].data;
vertices[i].firstarc=NULL;
vertices[i].indegree=0;
}
for(int k=0;k :";
cin>>v1>>v2>>w;
i=Locate_Vex(v1);
j=Locate_Vex(v2);
while(i==-1 || j==-1)
{
cout<>v1>>v2;
i=Locate_Vex(v1);
j=Locate_Vex(v2);
}
p=new ArcNode;
p->adjvex=j;
p->info=w;
p->nextarc=vertices[i].firstarc;
vertices[i].firstarc=p;
vertices[j].indegree+=1; // 1
}
cout< , dut(). :
/ e(i)=ve(j), l(i)=vl(k)-dut();
/ vj ve(j) vl(j) :
/ (1): ve(0)=0( 0 ) ,
/ : ve(j)=Max{ve(i)+dut()} i j
/ (2) vl(n-1)=ve(n-1) , :
/ vl(i)=Min{vl(j)-dut()} j i
/ , ve(j-1)
/ vj 。 vl(j-1)
/ vj ,
/ ve(j-1) vl(j-1).
/ vl ,
/ , , .
/ , .
/----------------------------------------------------------------*/
//
bool Topo_Order(stack &T)
{
stack s;
ArcNode *p=NULL;
for(int i=0;inextarc)
{
int w=p->adjvex;
if(vertices[w].indegree)
vertices[w].indegree--;
if(!vertices[w].indegree)
s.push(w);
if(ve[k]+p->info>ve[w]) // ve[w]
ve[w]=ve[k]+p->info;
}
}
if(count T;
string cp[10];
int c=0;
if(!Topo_Order(T))
{
cout<nextarc)
{
int k=p->adjvex;
int dut=p->info;
if(vl[k]-dutnextarc)
{
int k=p->adjvex;
int dut=p->info;
int ee=ve[j];
int el=vl[k]-dut;
char tag;
tag=(ee==el)?'*':' ';
cout<";
cout<
주 함수 "main. cpp"
#include"aoe.h"
int main()
{
ALGraph G;
G.Create_ALG();
G.Critical_Path();
cout<
입 출력 결과:
:6 8
:v1 v2 v3 v4 v5 v6
-> :v1 v2 3
-> :v1 v3 2
-> :v2 v5 3
-> :v2 v4 2
-> :v3 v4 4
-> :v3 v6 3
-> :v4 v6 2
-> :v5 v6 1
tail head weight earliest time latest time tag
v1 v3 2 0 0 *
v1 v2 3 0 1
v2 v4 2 3 4
v2 v5 3 3 4
v3 v6 3 2 5
v3 v4 4 2 2 *
v4 v6 2 6 6 *
v5 v6 1 6 7
The critical activities are ended with *
So the critical path is :v1->v3->v4->v6
Press any key to continue
입력 에 따라 생 성 된 유방 향 망 은 다음 과 같다.
관건 적 인 경로 가 하나 밖 에 없 을 때 출력 관건 적 인 경로 가 옳 습 니 다. 관건 적 인 경로 가 하 나 를 모 를 때 틀 렸 지만 모든 관건 적 인 활동, 경로 출력 알고리즘 을 찾 을 수 있 습 니 다. 나중에 출력 할 수 있 기 때문에 관건 적 인 경 로 를 보완 할 수 있 습 니 다.
역 토폴로지 질서 서열 을 구 하 는 것 은 토폴로지 질 서 를 구 할 때 창고 에 들 어 가 는 것 을 제외 하고 DFS 로 이 방향 도 를 직접 옮 겨 다 닐 수 있다. 이 노드 의 모든 인접 노드 가 출력 될 때 까지 이 서열 은 역 토폴로지 질서 서열 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
pandas 읽기 및 쓰기 Excelpandas 읽기와 쓰기 Excel은 중복된 데이터 가공 작업을 pandas에 맡기고 수동 노동을 절약하며 사용하기도 편리하지만 출력의 형식은 그다지 아름답지 않다.본고는 read_excel()과to_excel()의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.