1. Trang chủ
  2. » Công Nghệ Thông Tin

Phương pháp tìm kiếm có kinh nghiệm A cho bài toán tìm đường đi trên 1 bản đồ.

18 317 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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 !"#$%""&'()*+ #  ,-! 234 !5$6-*789:8:;< = >?@:AB$C7D$,61:7E-*F !GH107IJ K !>?L !>7:M:7<+:N1  #./! 012341235123 !O-PQ7<+>R>D - O-PQH?@ !!7,S->D >+: TO-PQUV:W?@ !,X !!7>D >+:Y-N-  6789:;)<=! >?2:!  *0 !,7>Z-  *0 !,7>+:  :!7,*[!7,*\ :0 W5>F357>?L !>7]  :8^:0 ::>_ W5!7,*[5$ @2?2!`$>?L !>7 !a  ;,,S>D Ib !c d !!7N ,*0 !,7eV75$> !7 SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 2  () *+,  / ,01 "Af  ,,*7R >_ 87 *N::>_ :1 ghi !OPQjOPQ'k G TOPQjA'kQ%l !OgPQ"OgPQm G TOgPQ"AmQ'n !OhPQ'nOhPQo G TOhPQ'nAoQ%' !OiPQ%&OiPQ" G TOiPQ%&A"Q%" G?e=p>_ g>?@::q >R<,,*7R OTOgPQ'nP  ,,*7R g = >?@:::>_ :1 e5hO$V7P*1 !>Mf !OPQ!OgPA>F357:- !OgPQ"AoQ'k OPQ'& GTOPQ!OPAOPQ'kA'&Q%k !OhPQ!OgPA>F357:- !OghPQ"AlQ'' OhPQo GTOhPQ!OhPAOhPQ''AoQ'j  ?e=p>_ h8r>?@:3s !>R<,,*7R 9D<  ?t !,u8r:q >?@:::>_ O>+:P  V7!OPQ'jOPQ& (?L !>7fGgGhGG  B2C! <82<c] D< ' v7,013N 8:E:_:wN,*0 !,7>Z- % E8 %'0E*x !<y,d !I1,;,I07]8,1<]z %%H107,*0 !,72v>Z-3N 8:E] %n02W5,*0 !,7>+:<y,d !I1,5 :d !]8,1<z %l0$x7,*0 !,7:CE28 y 1:3F123512G:3H SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 3  () *+,  / ,01 01:3F1:351:3H >B::8=IEH z %ka<{D<E,61,w,u!7|$3Z :}N5$08N1:1,*0 !,7:M!7,*[:}N5$0 J ;,v>Z-3N 8:] n*8]  JKL2M= • ~7|82,-=,,1 3S !v~eV7>F357>?L !>7W5!O~Pe5,N:MO~PQ& \  TO~PQ!O~P • ~7|82 !7.$,^7?-Cd !<|7W5~,^7?-W5~ ' eV7>F357>?L !>7W5 • ?e=p>?L !>7 5pI[,:*Nve[,*+ 51>M7>M:M%C| # !f N ,*s !~ ' 1•: I Cd !,*s !~ '  • D-€~ ' f ~>?@::q ,*?V:~ '  \ TO~P•TO~ ' Pe`!O~P•!O~ ' PQ • D-‚~'f g1O-PW5> !7,;<GTOPQ!OPAOP• g1~>?@::q ,*?V:GTO~P•TOP• =p~W5>?L !>7,^7?-  (CNO:; • D-5$O-P> !7,;< ;,,`,-=,,1 cW5,^7?- • D-:::- !Cd ! Jt $F,8^P 51>M,`cW5>Zp>} • D-O-PQ&eV7$q7-,-=,,1 c:+ W5,-=,,1 B$C7D$,^, ;,>Z-9\  eV75$> !7!O-P  QK • >MR MO*S<7:Med0  136eV7T≤ f(G) P • >SJT=R 5$$ƒ • UV=R H?-,*K,;,:|:: 136 • "L2RM W!HIỆN THỰC CHƯƠNG TRÌNH SVTH: Hà Anh Vũ GVHD: TS.Ngô Hữu Phúc Trang 4  () *+,  / ,01  "XJ.2YCZ! (RW?-,*K>),[,*\ ,=<9 ,NW;pe+34:4,R ?e+34:?t !' V7>),[ 5p,NW?-,*K ?8N-f '& 'l&'kgmhoi"~'%'&%l l%jn"l'nk%& & '"m %ll"o %oljn %mljm & 'ok ''m %'koj *1 !>Mf „ g… !'f:1I7D,8^>_ ,*1 !>),[O,*1 !e+34,*\ >),[:M'&>_ P „ g… !%f 'l&'kgmhoi"~'%'&%l +34f>_ :MW?@ !!7'l>_ :MW?@ !!7N&† „ g… !,wn>D D,f3… !nW?-,d !9 :1>_ &3… !lW?-,d !9 :1>_  '3… !kW?-,d !9 :1>_ %†d !9 W?-,*K:1,S !3… ! ?8N-f l%jn"l'nk%& 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:}N3N 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<!W5es !,d !9 :}N1363s !>RW?-eD,C7B$>?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)

Ngày đăng: 03/07/2015, 15:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w