blf et get_path
Bu işleme şunda yer alıyor:
ebeveyn
74142977d9
işleme
5a5093cd5e
1 değiştirilmiş dosya ile 10 ekleme ve 8 silme
18
src/BLF.ml
18
src/BLF.ml
|
@ -15,25 +15,27 @@ let blf gr id_src id_dest=
|
||||||
let acu =Array.make nb_n cost in
|
let acu =Array.make nb_n cost in
|
||||||
(*je fais un fold_left pour pouvoir individualiser au niveau de la mémoire les cases de la table*)
|
(*je fais un fold_left pour pouvoir individualiser au niveau de la mémoire les cases de la table*)
|
||||||
let blf_tab=n_fold gr (fun acu id->acu.(id)<-{cout=max_int; father=(-1)}; acu ) acu in
|
let blf_tab=n_fold gr (fun acu id->acu.(id)<-{cout=max_int; father=(-1)}; acu ) acu in
|
||||||
|
blf_tab.(id_src).cout<-0;
|
||||||
let file_id=[id_src] in
|
let file_id=[id_src] in
|
||||||
|
let file_marque =[] in
|
||||||
|
|
||||||
let rec blf_rec gr file_id = match file_id with
|
let rec blf_rec gr file_id file_marque= match file_id with
|
||||||
|[]-> blf_tab
|
|[]-> blf_tab
|
||||||
|a::b->
|
|a::b->
|
||||||
let l_out_arc=out_arcs gr a in
|
let l_out_arc=out_arcs gr a in
|
||||||
let rec loop_suc file_id l_out_arc blf_tab=match l_out_arc with
|
let rec loop_suc l_out_arc blf_tab file =
|
||||||
|[]-> blf_rec gr b
|
match l_out_arc with
|
||||||
|
|[]-> blf_rec gr file (a::file_marque)
|
||||||
|(id,label)::d->
|
|(id,label)::d->
|
||||||
if label != 0 && (blf_tab.(a).cout+label)<blf_tab.(id).cout then
|
if label != 0 && (blf_tab.(a).cout+label)<blf_tab.(id).cout then
|
||||||
begin
|
begin
|
||||||
blf_tab.(id).cout<-(blf_tab.(a).cout+label);
|
blf_tab.(id).cout<-(blf_tab.(a).cout+label);
|
||||||
blf_tab.(id).father<-a;
|
blf_tab.(id).father<-a;
|
||||||
if not (List.mem id file_id ) then loop_suc (List.append file_id [id]) d blf_tab else loop_suc file_id d blf_tab
|
if not (List.mem id file_marque) then loop_suc d blf_tab (id::file) else loop_suc d blf_tab file
|
||||||
end
|
end
|
||||||
else loop_suc file_id d blf_tab in
|
else loop_suc d blf_tab file in
|
||||||
loop_suc file_id l_out_arc blf_tab in
|
loop_suc l_out_arc blf_tab b in
|
||||||
blf_rec gr file_id
|
blf_rec gr file_id file_marque
|
||||||
|
|
||||||
(*avec blf_tab, on retrace chemin avec les pères*)
|
(*avec blf_tab, on retrace chemin avec les pères*)
|
||||||
let get_path gr id_src id_dest=
|
let get_path gr id_src id_dest=
|
||||||
|
|
Yükleniyor…
Yeni konuda referans