Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
247,52 KB
Nội dung
Đ N TRÍ TUỆ NHÂN TẠO GVHD: Thầy TS. NGÔ HỮU PHÚC Sinh viên thực hiện: HÀ ANH VŨ MSSV: 11870277 Lớp: CHKHMT – TPHCM23A11 !" #$%&'% () *+, / ,01 MỤC LỤC !"#$%""&'()*+ # ,-! 234 !5$6-*789:8:;< = >?@:AB$C7D$,61:7E-*F !GH107IJ K !>?L !>7:M:7<+:N1 #./! 012341235123 !O-PQ7<+>R>D - O-PQH?@ !!7,S->D >+: TO-PQUV:W?@ !,X !!7>D >+:Y-N- 6789:;)<=! >?2:! *0 !,7>Z- *0 !,7>+: :!7,*[!7,*\ :0 W5>F357>?L !>7] :8^:0 ::>_ W5!7,*[5$ @2?2!`$>?L !>7 !a ;,,S>D Ib !c d !!7N ,*0 !,7eV75$> !7 SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 2 () *+, / ,01 "Af ,,*7R >_ 87 *N::>_ :1 ghi !OPQjOPQ'k G TOPQjA'kQ%l !OgPQ"OgPQm G TOgPQ"AmQ'n !OhPQ'nOhPQo G TOhPQ'nAoQ%' !OiPQ%&OiPQ" G TOiPQ%&A"Q%" G?e=p>_ g>?@::q >R<,,*7R OTOgPQ'nP ,,*7R g = >?@:::>_ :1 e5hO$V7P*1 !>Mf !OPQ!OgPA>F357:- !OgPQ"AoQ'k OPQ'& GTOPQ!OPAOPQ'kA'&Q%k !OhPQ!OgPA>F357:- !OghPQ"AlQ'' OhPQo GTOhPQ!OhPAOhPQ''AoQ'j ?e=p>_ h8r>?@:3s !>R<,,*7R 9D< ?t !,u8r:q >?@:::>_ O>+:P V7!OPQ'jOPQ& (?L !>7fGgGhGG B2C! <82<c] D< ' v7,013N 8:E:_:wN,*0 !,7>Z- % E8 %'0E*x !<y,d !I1,;,I07]8,1<]z %%H107,*0 !,72v>Z-3N 8:E] %n02W5,*0 !,7>+:<y,d !I1,5 :d !]8,1<z %l0$x7,*0 !,7:CE28 y 1:3F123512G:3H SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 3 () *+, / ,01 01:3F1:351:3H >B::8=IEH z %ka<{D<E,61,w,u!7|$3Z :}N5$08N1:1,*0 !,7:M!7,*[:}N5$0 J ;,v>Z-3N 8:] n*8] JKL2M= • ~7|82,-=,,1 3S !v~eV7>F357>?L !>7W5!O~Pe5,N:MO~PQ& \ TO~PQ!O~P • ~7|82 !7.$,^7?-Cd !<|7W5~,^7?-W5~ ' eV7>F357>?L !>7W5 • ?e=p>?L !>7 5pI[,:*Nve[,*+ 51>M7>M:M%C| # !f N ,*s !~ ' 1•: I Cd !,*s !~ ' • D-€~ ' f ~>?@::q ,*?V:~ ' \ TO~P•TO~ ' Pe`!O~P•!O~ ' PQ • D-‚~'f g1O-PW5> !7,;<GTOPQ!OPAOP• g1~>?@::q ,*?V:GTO~P•TOP• =p~W5>?L !>7,^7?- (CNO:; • D-5$O-P> !7,;< ;,,`,-=,,1 cW5,^7?- • D-:::- !Cd ! Jt $F,8^P 51>M,`cW5>Zp>} • D-O-PQ&eV7$q7-,-=,,1 c:+ W5,-=,,1 B$C7D$,^, ;,>Z-9\ eV75$> !7!O-P QK • >MR MO*S<7:Med0 136eV7T≤ f(G) P • >SJT=R 5$$ƒ • UV=R H?-,*K,;,:|:: 136 • "L2RM W!HIỆN THỰC CHƯƠNG TRÌNH SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 4 () *+, / ,01 "XJ.2YCZ! (RW?-,*K>),[,*\ ,=<9 ,NW;pe+34:4,R ?e+34:?t !' V7>),[ 5p,NW?-,*K ?8N-f '& 'l&'kgmhoi"~'%'&%l l%jn"l'nk%& & '"m %ll"o %oljn %mljm & 'ok ''m %'koj *1 !>Mf „ g… !'f:1I7D,8^>_ ,*1 !>),[O,*1 !e+34,*\ >),[:M'&>_ P „ g… !%f 'l&'kgmhoi"~'%'&%l +34f>_ :MW?@ !!7'l>_ :MW?@ !!7N&† „ g… !,wn>D D,f3… !nW?-,d !9 :1>_ &3… !lW?-,d !9 :1>_ '3… !kW?-,d !9 :1>_ %†d !9 W?-,*K:1,S !3… ! ?8N-f l%jn"l'nk%& SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 5 H?@ ! !7 \ >_ *q ! 8^j ^7>D >_ % O>_ P ^>_ $5>_ 5p>7 >D () *+, / ,01 8<[! ' E\(8<!W?-,*K'136:}N3N 8:W7\ CD,>t class Node { public LuuVet Value { get; set; } public Node Next { get; set; } public Node() { Value = null; Next = null; } public Node(LuuVet V) { Value = V; Next = null; } } % E\E226<!W5es !,d !9 :}N1363s !>RW?-eD,C7B$>?L ! class LuuVet { private CDinh m_v; private int m_gv, m_fv; private Node m_nodecha; public CDinh v { get { return m_v; } set { m_v = value; } } public int fv { get { return m_fv; } set { m_fv = value; } } public int gv { get { return m_gv; } set { m_gv = value; } } SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 6 () *+, / ,01 public Node nodecha { get { return m_nodecha; } set { m_nodecha = value; } } public LuuVet() { v = null; m_nodecha = null; gv = 0; fv = 0; } public LuuVet(CDinh dinh, int GV, int FV,Node dc) { v = dinh; gv = GV; fv = FV; m_nodecha = dc; } public LuuVet(LuuVet l) { v = l.v; gv = l.gv; fv = l.fv; m_nodecha = l.m_nodecha; } } n E\8=I.! class SingleLinkedList { public Node Head { get; set; } //con trỏ Head //hàm khởi tạo mặc định public SingleLinkedList() { Head = null; //khởi tạo danh sách rỗng } //Hàm thêm vào đầu ds //Trả về true nếu thành công public bool AddHead(Node p) { if (p == null) return false; if (Head == null) Head = p; else { SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 7 () *+, / ,01 p.Next = Head; Head = p; } return true; } //hàm thêm node vào DSLK để DSLK vẫn tăng dần theo fv public bool InsertASC(Node n) { if (n == null) return false; if (Head != null) { Node p = Head; Node q=null; while ( p != null && n.Value.fv > p.Value.fv) { q = p; p = p.Next; } if (q == null) AddHead(n); else { q.Next = n; n.Next = p; } } else AddHead(n); return true; } //Hàm lấy và xóa phần tử đầu trong DSLK public Node GetAndRemoveHead() { if (Head == null) return null; Node p = new Node(); p = Head; Head = Head.Next; return p; } //Hàm thêm node vào cuối DSLK public bool AddLast(Node n) { if (n == null) return false; Node p = Head; if (Head == null) { Head = n; SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 8 () *+, / ,01 return true; } while (p.Next != null) p = p.Next; n.Next = null; p.Next = n; return true; } } l E\ ]!W?-,*K,d !9 :1'>_ class CDinh { protected string m_tendinh; protected CDinhKe[] m_tapdinhke; protected int m_luonggia;//gia tri uoc luong:dung ham danh gia h(u) protected int m_index; public CDinh() { m_tendinh = ""; m_luonggia = 0; } public CDinh(string tendinh) { m_tendinh = tendinh; m_tapdinhke = null; m_luonggia = 0; } public CDinh(string tendinh,int luonggia) { m_tendinh = tendinh; m_luonggia = luonggia; m_tapdinhke = null; } public string tendinh { get { return m_tendinh; } set { m_tendinh = value; } } public int index { get { return m_index; } set { m_index = value; } } public CDinhKe[] tapdinhke { SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 9 () *+, / ,01 get { return m_tapdinhke; } set { m_tapdinhke = value; } } public int luonggia { get { return m_luonggia; } set { m_luonggia = value; } } //ham tra ve so luong dinh ke public int sodinhke() { if (m_tapdinhke != null) return m_tapdinhke.GetLength(0); else return 0; } //hàm lượng giá đỉnh public void h() { int t=0; foreach (CDinhKe dk in m_tapdinhke) { if (t > dk.trongso) t = dk.trongso; } m_luonggia = t; } } k E\ ]U<!W?-,*K,d !9 $5'>_ :M ^7>D class CDinhKe { protected CDinh m_dinhke; protected int m_trongso; public CDinh dinhke { get { return m_dinhke; } set { m_dinhke = value; } } public int trongso { get { return m_trongso; } set { m_trongso = value; } } public CDinhKe() { m_dinhke = null; SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 10 [...]... đã có thứ tự luôn rồi nên ko cần phải làm SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 14 Đồ án Trí tuệ nhân tạo //thao tác sắp xếp L n a } } } 7 Chương trình chính : namespace AStarSearchDemo { class Program { static void Main(string[] args) { AStarSearch ass = new AStarSearch(); ass.docDothi("dothi_in.txt"); Console.WriteLine("So dinh cua Do thi : {0}", ass.sodinh); Console.WriteLine("Luong gia cua... Console.Read(); } } } Kết quả thực hiện chương trình : SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 16 Đồ án Trí tuệ nhân tạo III Hướng phát triển : Do em nhập viện đi u trị và ba c a em mất nên thời gian làm bài rất hạn chế, do đó chương trình ch a kịp hiện thực trên 1 bản đồ cụ thể và hàm lượng giá còn ch a tốt Tương lai, chương trình có thể áp dụng để tìm đường trên 1 bản đồ cụ thể với 1 hàm lượng... } } 6 Lớp AStarSearch : Lớp hiện thực c a thuật toán A* class AStarSearch { protected CDinh[] m_tapdinh; protected int m_sodinh; public CDinh[] tapdinh { get { return m_tapdinh; } } public int sodinh { get { return m_sodinh; } set { m_sodinh = value; } } public AStarSearch() { m_tapdinh = null; m_sodinh = 0; } public bool docDothi(string tenfile) { try { int i, j,n; string text = File.ReadAllText(tenfile);... int.Parse(ms[i*2 +1] ); } //lay tap dinh ke cho moi dinh for (i = 0; i < m_sodinh; i++) { s = sr.ReadLine(); ms = s.Split('\t', ' '); //lay so dinh ke cua dinh i n = int.Parse(ms[0]); if (n >= 1) { //lay dinh ke, trong so, luong gia cua dinh i m_tapdinh[i].tapdinhke = new CDinhKe[n];//khoi tao so dinh ke cho dinh i int k = 0; for (j = 1; j thông báo thất bại, stop if (L.Head == null) SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 13 Đồ án Trí tuệ nhân tạo { Console.WriteLine("Tim kiem that bai, ket thuc tim kiem!"); return null; } //Loại trạng thái u ở đầu danh sách L Node u = L.GetAndRemoveHead(); //Thêm u vào cuối danh sách T T.AddLast(u); //Nếu u là trạng... Hữu Phúc Trang 15 Đồ án Trí tuệ nhân tạo CDinh dbd = new CDinh(); CDinh dkt = new CDinh(); foreach (CDinh d in ass.tapdinh) { if (d.tendinh == bd) dbd = d; if (d.tendinh == kt) dkt = d; } if (dbd.tendinh == "" || dkt.tendinh == "") { Console.WriteLine("Khong tim thay dinh bat dau hoac dinh ket thuc!"); Console.Read(); return; } SingleLinkedList T= ass.TimDuongAStar(dbd, dkt); //Xuất đường đi thấy if... {thông báo thành công,stop} if (u.Value.v == kthuc) { Console.WriteLine("Da tim thay dinh dich, ket thuc tim kiem!"); return T; } //Hiển thị u ra màn hình Console.WriteLine("Phat trien {0} sinh ra cac dinh con : ", u.Value.v.tendinh); //for mỗi trạng thái v kề u if (u.Value.v.tapdinhke != null) { foreach (CDinhKe v in u.Value.v.tapdinhke) { LuuVet lv = new LuuVet(); lv.nodecha = u; lv.v = v.dinhke; //g(v)