Khiêu chuyển chí

Thác phác bài tự

Định nghĩa

Thác phác bài tự ( Topological sorting ) yếu giải quyết đích vấn đề thị như hà cấp nhất cá hữu hướng vô hoàn đồ đích sở hữu tiết điểm bài tự.

Ngã môn khả dĩ nã đại học mỗi học kỳ bài khóa đích lệ tử lai miêu thuật giá cá quá trình, bỉ như học tập đại học khóa trình trung hữu: “Trình tự thiết kế”, “Toán pháp ngữ ngôn”, “Cao đẳng sổ học”, “Ly tán sổ học”, “Biên dịch kỹ thuật”, “Phổ thông vật lý”, “Sổ cư kết cấu”, “Sổ cư khố hệ thống” đẳng. Án chiếu lệ tử trung đích bài khóa, đương ngã môn tưởng yếu học tập “Sổ cư kết cấu” đích thời hầu, tựu tất tu tiên học hội “Ly tán sổ học”, học tập hoàn giá môn khóa hậu tựu hoạch đắc liễu học tập “Biên dịch kỹ thuật” đích tiền trí điều kiện. Đương nhiên, “Biên dịch kỹ thuật” hoàn hữu nhất cá canh gia tiền đích khóa trình “Toán pháp ngữ ngôn”. Giá ta khóa trình tựu tương đương vu kỉ cá đỉnh điểm,Đỉnh điểm chi gian đích hữu hướng biênTựu tương đương vu học tập khóa trình đích thuận tự. Giáo vụ xử an bài giá ta khóa trình, sử đắc tại la tập quan hệ phù hợp đích tình huống hạ bài xuất khóa biểu, tựu thị thác phác bài tự đích quá trình.

topo

Đãn thị như quả mỗ nhất thiên bài khóa đích lão sư đả hạp thụy liễu, thuyết tưởng yếu học tập sổ cư kết cấu, hoàn đắc tiên học thao tác hệ thống, nhi thao tác hệ thống đích tiền trí khóa trình hựu thị sổ cư kết cấu, na ma đáo để ứng cai tiên học na nhất cá ( bất khảo lự đồng thời học tập đích tình huống )? Tại giá lí, sổ cư kết cấu hòa thao tác hệ thống gian tựu xuất hiện liễu nhất cá hoàn, hiển nhiên đồng học môn hiện tại một bạn pháp lộng thanh sở tự kỷ nhu yếu tiên học thập ma liễu, dã tựu một bạn pháp tiến hành thác phác bài tự liễu. Nhân vi như quả hữu hướng đồ trung tồn tại hoàn lộ, na ma ngã môn tựu một bạn pháp tiến hành thác phác bài tự.

Nhân thử ngã môn khả dĩ thuyết tại nhất cáDAG ( hữu hướng vô hoàn đồ )Trung, ngã môn tương đồ trung đích đỉnh điểm dĩ tuyến tính phương thức tiến hành bài tự, sử đắc đối vu nhậm hà đích đỉnh điểmĐáoĐích hữu hướng biên,Đô khả dĩ hữuTạiĐích tiền diện.

Hoàn hữu cấp định nhất cá DAG, như quả tòngĐáoHữu biên, tắc nhận viY lại vu.Như quảĐáoHữu lộ kính (Khả đạt), tắc xưngGian tiếp y lại vu.

Thác phác bài tự đích mục tiêu thị tương sở hữu tiết điểm bài tự, sử đắc bài tại tiền diện đích tiết điểm bất năng y lại vu bài tại hậu diện đích tiết điểm.

AOV võng

Nhật thường sinh hoạt trung, nhất hạng đại đích công trình khả dĩ khán tác thị do nhược càn cá tử công trình tổ thành đích tập hợp, giá ta tử công trình chi gian tất định tồn tại nhất định đích tiên hậu thuận tự, tức mỗ ta tử công trình tất tu tại kỳ tha đích nhất ta tử công trình hoàn thành hậu tài năng khai thủy.

Ngã môn dụng hữu hướng đồ lai biểu hiện tử công trình chi gian đích tiên hậu quan hệ, tử công trình chi gian đích tiên hậu quan hệ vi hữu hướng biên, giá chủng hữu hướng đồ xưng vi đỉnh điểm hoạt động võng lạc, tứcAOV võng (Activity On Vertex Network).Nhất cá AOV võng tất định thị nhất cá hữu hướng vô hoàn đồ, tức bất đái hữu hồi lộ. Dữ DAG bất đồng đích thị, AOV đích hoạt động đô biểu kỳ tại đỉnh điểm thượng. ( thượng diện đích lệ đồ tức vi nhất cá AOV võng )

Tại AOV võng trung, đỉnh điểm biểu kỳ hoạt động, hồ biểu kỳ hoạt động gian đích ưu tiên quan hệ. AOV võng trung bất ứng cai xuất hiện hoàn, giá dạng tựu năng cú trảo đáo nhất cá đỉnh điểm tự liệt, sử đắc mỗi cá đỉnh điểm đại biểu đích hoạt động đích tiền khu hoạt động đô bài tại cai đỉnh điểm đích tiền diện, giá dạng đích tự liệt xưng vi thác phác tự liệt ( nhất cá AOV võng đích thác phác tự liệt bất thị duy nhất đích ), do AOV võng cấu tạo thác phác tự liệt đích quá trình xưng vi thác phác bài tự. Nhân thử, thác phác bài tự dã khả dĩ giải thích vi tương AOV võng trung sở hữu hoạt động bài thành nhất cá tự liệt, sử đắc mỗi cá hoạt động đích tiền khu hoạt động đô bài tại cai hoạt động đích tiền diện ( nhất cá AOV võng trung đích thác phác bài tự dã bất thị duy nhất đích ).

  • Tiền khu hoạt động: Hữu hướng biên khởi điểm đích hoạt động xưng vi chung điểm đích tiền khu hoạt động ( chỉ hữu đương nhất cá hoạt động đích tiền khu toàn bộ đô hoàn thành hậu, giá cá hoạt động tài năng tiến hành ).

  • Hậu kế hoạt động: Hữu hướng biên chung điểm đích hoạt động xưng vi khởi điểm đích hậu kế hoạt động.

Kiểm trắc AOV võng trung thị phủ đái hoàn đích phương thức thị cấu tạo thác phác tự liệt, khán thị phủ bao hàm sở hữu đỉnh điểm.

Cấu tạo thác phác tự liệt bộ sậu

  1. Tòng đồ trung tuyển trạch nhất cá nhập độ vi linh đích điểm.
  2. Thâu xuất cai đỉnh điểm, tòng đồ trung san trừ thử đỉnh điểm cập kỳ sở hữu đích xuất biên.

Trọng phục thượng diện lưỡng bộ, trực đáo sở hữu đỉnh điểm đô thâu xuất, thác phác bài tự hoàn thành, hoặc giả đồ trung bất tồn tại nhập độ vi linh đích điểm, thử thời thuyết minh đồ thị hữu hoàn đồ, thác phác bài tự vô pháp hoàn thành, hãm nhập tử tỏa.

Quan kiện lộ kính hòa AOE võng

Dữ AOV võng đối ứng đích thịAOE võng ( Activity On Edge Network)Tức biên biểu kỳ hoạt động đích võng. AOE võng thị nhất cá đái quyền đích hữu hướng vô hoàn đồ, kỳ trung, đỉnh điểm biểu kỳ sự kiện, hồ biểu kỳ hoạt động trì tục đích thời gian. Thông thường, AOE võng khả dĩ dụng lai cổ toán công trình đích hoàn thành thời gian. AOE võng ứng cai thị vô hoàn đích, thả tồn tại duy nhất nhập độ vi linh đích khởi thủy đỉnh điểm ( nguyên điểm ), dĩ cập duy nhất xuất độ vi linh đích hoàn thành đỉnh điểm ( hối điểm ).

topo

AOE võng trung đích hữu ta hoạt động thị khả dĩ tịnh hành tiến hành đích, sở dĩ hoàn thành chỉnh cá công trình đích tối đoản thời gian thị tòng khai thủy điểm đáo hoàn thành điểm đích tối trường hoạt động lộ kính trường độ ( giá lí sở thuyết đích lộ kính trường độ thị chỉ lộ kính thượng các hoạt động đích trì tục thời gian chi hòa, tức hồ đích quyền trị chi hòa, bất thị lộ kính thượng hồ đích sổ mục ). Nhân vi nhất hạng công trình nhu yếu hoàn thành sở hữu công trình nội đích hoạt động, sở dĩ tối trường đích hoạt động lộ kính dã thị quan kiện lộ kính, tha quyết định công trình hoàn thành đích tổng thời gian.

AOE võng đích tương quan cơ bổn khái niệm

  • Hoạt động: AOE võng trung, hồ biểu kỳ hoạt động. Hồ đích quyền trị biểu kỳ hoạt động trì tục đích thời gian, hoạt động tại kỳ tiền khu sự kiện ( tức cai hồ đích khởi điểm ) bị xúc phát hậu khai thủy.

  • Sự kiện: AOE võng trung, đỉnh điểm biểu kỳ sự kiện, sự kiện tại tha đích sở hữu tiền khu hoạt động ( tức chỉ hướng cai biên đích hồ ) toàn bộ hoàn thành bị xúc phát.

  • Sự kiện ( đỉnh điểm )Đích tối tảo phát sinh thời gian: Cai sự kiện tối tảo khả năng đích phát sinh thời gian, ký vi,Tha quyết định liễu dĩ cai đỉnh điểm khai thủy đích hoạt động đích tối tảo phát sinh thời gian, hiển nhiên nguyên điểm đích đích tối tảo phát sinh thời gian vi 0, nhân vi sự kiện phát sinh nhu yếu kỳ sở hữu tiền khu hoạt động toàn bộ hoàn thành, sở dĩ tha đẳng vu sơ thủy điểm đáo cai đỉnh điểm đích lộ kính trường độ đích tối đại trị, tả thành đệ thôi:,Kỳ trungBiểu kỳ j đáo i đích biên đích quyền trị ( tức j đáo i đích hoạt động đích trì tục thời gian ),Biểu kỳ i đích sở hữu tiền khu sự kiện đích tập hợp.

  • Sự kiện ( đỉnh điểm )Đích tối trì phát sinh thời gian: Tại bất thôi trì chỉnh cá công kỳ đích tiền đề hạ, cai sự kiện tối vãn năng dung nhẫn đích phát sinh thời gian, ký vi,Tha quyết định liễu sở hữu dĩ cai trạng thái kết thúc đích hoạt động đích tối trì phát sinh thời gian, tha đẳng vu sự kiện đích sở hữu hậu kế hoạt động đích tối trì khai thủy thời gian đích tối tiểu trị, tức,Kỳ trungBiểu kỳ i đáo j đích biên đích quyền trị ( tức i đáo j đích hoạt động đích trì tục thời gian ),Biểu kỳ i đích sở hữu hậu khu sự kiện đích tập hợp.

  • Hoạt động ( hồ )Đích tối tảo khai thủy thời gian: Cai hoạt động tối tảo khả năng đích phát sinh thời gian, ký vi,Hiển nhiên, tha đẳng vu kỳ tiền khu sự kiện đích tối tảo phát sinh thời gian, tức.

  • Hoạt động ( hồ )Đích tối trì khai thủy thời gian: Tại bất thôi trì chỉnh cá công kỳ đích tiền đề hạ, hoạt động khai thủy tối vãn năng dung nhẫn đích thời gian, ký vi,Tha đẳng vu kỳ hậu kế sự kiện đích tối trì phát sinh thời gian - cai sự kiện đích trì tục thời gian ( quyền trị ), tức,Kỳ trungBiểu kỳ u đáo v đích biên đích quyền trị ( tức u đáo v đích hoạt động đích trì tục thời gian ).

  • Quan kiện lộ kính: AOE võng trung tòng nguyên điểm đáo hối điểm đích tối trường lộ kính đích trường độ.

  • Quan kiện hoạt động: Tức quan kiện lộ kính thượng đích hoạt động, tha đích tối tảo khai thủy thời gian hòa tối trì khai thủy thời gian tương đẳng.

Đệ thôi cầu tối tảo hòa tối trì phát sinh thời gian

Án thác phác thuận tự cầu, tối tảo phát sinh thời gian tòng tiền vãng hậu đệ thôi, tối trì phát sinh thời gian tòng hậu vãng tiền đệ thôi, đệ thôi công thức như thượngAOE võng đích tương quan cơ bổn khái niệmSở kỳ.

Kahn toán pháp

Quá trình

Sơ thủy trạng thái hạ, tập hợpTrang trứ sở hữu nhập độ viĐích điểm,Thị nhất cá không liệt biểu.

Mỗi thứ tòngTrung thủ xuất nhất cá điểm( khả dĩ tùy tiện thủ ) phóng nhập,Nhiên hậu tươngĐích sở hữu biênSan trừ. Đối vu biên,Nhược tương cai biên san trừ hậu điểmĐích nhập độ biến vi,Tắc tươngPhóng nhậpTrung.

Bất đoạn trọng phục dĩ thượng quá trình, trực đáo tập hợpVi không. Kiểm tra đồ trung thị phủ tồn tại nhậm hà biên, như quả hữu, na ma giá cá đồ nhất định hữu hoàn lộ, phủ tắc phản hồi,Trung đỉnh điểm đích thuận tự tựu thị cấu tạo thác phác tự liệt đích kết quả.

Thủ tiên khán lai tựWikipediaĐích ngụy đại mã

Thật hiện
1
2
3
4
5
6
7
8
9
10
11
12
13
L ← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
while S is not empty do
remove a node n from S
insert n into L
for each node m with an edge e from n to m do
remove edge e from the graph
if m has no other incoming edges then
insert m into S
if graph has edges then
return error (graph has at least one cycle)
else
return L (a topologically sorted order)

Đại mã đích hạch tâm thị duy trì nhất cá nhập độ vi 0 đích đỉnh điểm đích tập hợp.

Khả dĩ tham khảo cai đồ

topo

Đối kỳ bài tự đích kết quả tựu thị: 2 -> 8 -> 0 -> 3 -> 7 -> 1 -> 5 -> 6 -> 9 -> 4 -> 11 -> 10 -> 12

Thời gian phục tạp độ

Giả thiết giá cá đồTại sơ thủy hóa nhập độ viĐích tập hợpĐích thời hầu tựu nhu yếu biến lịch chỉnh cá đồ, tịnh kiểm tra mỗi nhất điều biên, nhân nhi hữuĐích phục tạp độ. Nhiên hậu đối cai tập hợp tiến hành thao tác, hiển nhiên dã thị nhu yếuĐích thời gian phục tạp độ.

Nhân nhi tổng đích thời gian phục tạp độ tựu hữu

Thật hiện

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
intn,m;
vectorint>G[MAXN];
intin[MAXN];// tồn trữ mỗi cá kết điểm đích nhập độ

booltoposort(){
vectorint>L;
queueint>S;
for(inti=1;in;i++)
if(in[i]==0)S.push(i);
while(!S.empty()){
intu=S.front();
S.pop();
L.push_back(u);
for(autov:G[u]){
if(--in[v]==0){
S.push(v);
}
}
}
if(L.size()==n){
for(autoi:L)couti' ';
returntrue;
}
returnfalse;
}

DFS toán pháp

Thật hiện

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
usingGraph=vectorvectorint>>;// lân tiếp biểu

structTopoSort{
enumclassStatus:uint8_t{to_visit,visiting,visited};

constGraph&graph;
constintn;
vectorStatus>status;
vectorint>order;
vectorint>::reverse_iteratorit;

TopoSort(constGraph&graph)
:graph(graph),
n(graph.size()),
status(n,Status::to_visit),
order(n),
it(order.rbegin()){}

boolsort(){
for(inti=0;in;++i){
if(status[i]==Status::to_visit&&!dfs(i))returnfalse;
}
returntrue;
}

booldfs(constintu){
status[u]=Status::visiting;
for(constintv:graph[u]){
if(status[v]==Status::visiting)returnfalse;
if(status[v]==Status::to_visit&&!dfs(v))returnfalse;
}
status[u]=Status::visited;
*it++=u;
returntrue;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fromenumimportEnum,auto


classStatus(Enum):
to_visit=auto()
visiting=auto()
visited=auto()


deftopo_sort(graph:list[list[int]])->list[int]|None:
n=len(graph)
status=[Status.to_visit]*n
order=[]

defdfs(u:int)->bool:
status[u]=Status.visiting
forvingraph[u]:
ifstatus[v]==Status.visiting:
returnFalse
ifstatus[v]==Status.to_visitandnotdfs(v):
returnFalse
status[u]=Status.visited
order.append(u)
returnTrue

foriinrange(n):
ifstatus[i]==Status.to_visitandnotdfs(i):
returnNone

returnorder[::-1]

Thời gian phục tạp độ:Không gian phục tạp độ:

Hợp lý tính chứng minh

Khảo lự nhất cá đồ, san điệu mỗ cá nhập độ viĐích tiết điểm chi hậu, như quả tân đồ khả dĩ thác phác bài tự, na ma nguyên đồ nhất định dã khả dĩ. Phản quá lai, như quả nguyên đồ khả dĩ thác phác bài tự, na ma san điệu hậu dã khả dĩ.

Ứng dụng

Thác phác bài tự khả dĩ phán đoạn đồ trung thị phủ hữu hoàn, hoàn khả dĩ dụng lai phán đoạn đồ thị phủ thị nhất điều liên. Thác phác bài tự khả dĩ dụng lai cầu AOE võng trung đích quan kiện lộ kính, cổ toán công trình hoàn thành đích tối đoản thời gian.

Cầu tự điển tự tối đại / tối tiểu đích thác phác bài tự

Tương Kahn toán pháp trung đích đội liệt thế hoán thành tối đại đôi / tối tiểu đôi thật hiện đích ưu tiên đội liệt tức khả, thử thời tổng đích thời gian phục tạp độ vi.

Tập đề

CF 1385E:Nhu yếu thông quá thác phác bài tự cấu tạo.

Luogu P1347:Thác phác bài tự mô bản.

Tham khảo

  1. Ly tán sổ học cập kỳ ứng dụng. ISBN:9787111555391
  2. https://blog.csdn.net/dm_vincent/article/details/7714519
  3. Topological sorting,https://en.wikipedia.org/w/index.php?title=Topological_sorting&oldid=854351542
  4. https://blog.csdn.net/time_money/article/details/109857779
  5. https://zhuanlan.zhihu.com/p/164751109