TIỂU LUẬN LẬP TRÌNH TRÍ TUỆ NHÂN TẠO

16 1.1K 0
TIỂU LUẬN LẬP TRÌNH TRÍ TUỆ NHÂN TẠO

Đ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

Tiu lun mụn hc Lp trỡnh trớ tu nhõn to đại học đà nẵng trờng đại học bách khoa tiểu luận lập trình trí tuệ nhân tạo Giảng viên hớng dẫn: PGS.TS Phan Huy Khánh Học viên thực hiện: Đặng Ngọc Tuấn Lê Công Vợng Trần Lơng Vơng Lớp Cao học Khoa học máy tính K24 Quảng Bình Đồng Hới, 02/2013 LI NểI U Trớ tu nhõn to tr thnh mt mụn hc vi mc ớch chớnh l cung cp li gii cho cỏc vn ca cuc sng thc t. Ngy nay, cỏc ng dng trớ tu nhõn 1 Tiểu luận môn học Lập trình trí tuệ nhân tạo tạo rất đa dạng và phong phú, áp dụng cho nhiều lĩnh vực như điều khiển tự động, các loại robot, các hệ dịch tự động cho các ngôn ngữ tự nhiên, các hệ nhận dạng, trò chơi điện tử,… Thuật ngữ trí tuệ nhân tạo được dùng để nói đến các máy tính có những mục đích khác nhau, xử lý các lĩnh vực khác nhau trong đời sống. Ngành khoa học nghiên cứu lý thuyết và các ứng dụng của trí tuệ nhân tạo ngày càng phát triển. Đây là một ngành trọng yếu của tin học, liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thông minh của máy móc. Lập trình Hàm bằng ngôn ngữ Scheme và lập trình Prolog là các công cụ cơ bản và rất quan trọng trong việc giải quyết các bài toán Trí tuệ nhân tạo. Lập trình hàm là phong cách lập trình dựa trên định nghĩa hàm sử dụng phép tính lambda (λ-calculus). Trong các ngôn ngữ lập trình hàm, hàm đóng vai trò trung tâm, thay vì thực hiện lệnh, máy tính sẽ thực hiện tính toán các biểu thức. Ngôn ngữ Scheme có tính phổ dụng cao, giải quyết thích hợp các bài toán trong lĩnh vực công nghệ thông tin. Một chương trình được lập trình dưới ngôn ngữ Scheme là một dãy các định nghĩa hàm tích hợp lại để định nghĩa một hàm hoặc nhiều hàm phức tạp hơn. Prolog là ngôn ngữ lập trình logic, Prolog còn được gọi là ngôn ngữ lập trình ký hiệu tương tự lập trình hàm. Nguyên lý lập trình logic dựa trên phép suy đoán logic, liên quan đến những khái niệm toán học. Prolog thích hợp để giải quyết những bài toán liên quan đến các đối tượng và mối quan hệ giữa các đối tượng đó. Có rất nhiều lĩnh vực liên quan đến lập trình trí tuệ nhân tạo, xong với điều kiện và thời gian cho phép chúng em xin trình bày một số lĩnh vực nghiên cứu sau đây: Phần I: LÝ THUYẾT LẬP TRÌNH HÀM Đề tài: Áp dụng kiểu dữ liệu trừu tượng, xây dựng kiểu cấu trúc dữ liệu truyền thống ngăn xếp (Stack) trong Scheme. Cho ví dụ minh hoạ vận dụng ngăn xếp để chuyển đổi một số từ hệ thập phân sang hệ nhị phân Phần II: BÀI TOÁN LẬP TRÌNH HÀM 2 Tiểu luận môn học Lập trình trí tuệ nhân tạo Đề tài: Hãy viết chương trình Scheme mô phỏng các hàm đệ quy thực hiện kiểm tra số nguyên tố (Test for Prime). Phần III: BÀI TOÁN LẬP TRÌNH PROLOG Đề tài: Cài đặt thuật toán tìm ước số chung lớn nhất sử dụng thuật toán Euclide (Euclidean Algorithm). Với thời gian và việc nghiên cứu của chúng tôi còn nhiều hạn chế nên không tránh khỏi có những sai sót. Rất mong được sự góp ý và định hướng của Thầy PGS.TS Phan Huy Khánh và các anh chị cùng lớp để chúng tôi có thể tiếp tục nghiên cứu và đạt được kết quả tốt hơn trong thời gian tới. Xin chân thành cảm ơn PGS.TS Phan Huy Khánh đã nhiệt tình giảng dạy, góp ý để nhóm em hoàn thành tiểu luận này. Nhóm học viên thực hiện: Đặng Ngọc Tuấn Lê Công Vượng Trần Lương Vương 3 Tiểu luận môn học Lập trình trí tuệ nhân tạo MỤC LỤC §ång Híi, 02/2013 1 4 Tiểu luận môn học Lập trình trí tuệ nhân tạo Phần I LÝ THUYẾT LẬP TRÌNH HÀM Đề tài: Áp dụng kiểu dữ liệu trừu tượng, xây dựng kiểu cấu trúc dữ liệu truyền thống ngăn xếp (Stack) trong Scheme. Cho ví dụ minh hoạ vận dụng ngăn xếp để đổi một số từ hệ thập phân sang hệ nhị phân. I. Tổng quan về ngăn xếp (Stack) Ngăn xếp (Stack) là một kiểu danh sách tuyến tính đặc biệt mà phép bổ sung hay loại bỏ luôn luôn thực hiện ở một đầu gọi là đỉnh (Top). Có thể hình dung nó như cơ cấu của một hộp chứa đạn súng trường hoặc súng tiểu liên. Lắp đạn vào hay lấy đạn ra cũng chỉ ở một đầu hộp. Viên đạn mới nạp vào sẽ nằm ở đỉnh (Top) còn viên đạn nặp vào đầu tiên sẽ nằm ở đáy(Bottom). Viên nạp vào sau cùng chính là viên lên nòng súng đầu tiên. Nguyên tắc “Vào sau ra trước” như vậy của Stack đã đưa đến một tên gọi khác: Danh sách kiểu LIFO (last - in - first - out). Stack có thể rỗng hoặc bao gồm một số phần tử. Có thể dùng cấu trúc dữ liệu vector (mảng) hoặc cấu trúc dữ liệu danh sách móc nối để lưu trữ dữ liệu cho các Stack. Ta có nguyên tắc hoạt động của Stack như sau: 5 Vào Ra Tiểu luận môn học Lập trình trí tuệ nhân tạo II. Xây dựng kiểu cấu trúc dữ liệu truyền thống ngăn xếp (Stack) trong Scheme 1. Đặc tả cấu trúc dữ liệu kiểu ngăn xếp: Types Stack(T) functions empty-stack : → Stack(T) empty-stack? : Stack(T) → boolean push-stack : T × Stack(T) → Stack(T) pop-stack : Stack(T) -/→ Stack(T) top-stack : Stack(T) -/→ T preconditions pop-stack(s: Stack(T)) chỉ xác định khi và chỉ khi (not empty-stack?(S)) top-stack(s: Stack(T)) chỉ xác định khi và chỉ khi (not empty-stack?(S)) axioms var x: T, s : Stack(T) empty-stack?(empty-stack) = true empty-stack?(push-stack (x, S)) = false pop-stack(push-stack (x, S)) = S top-stack(push-stack (x, S)) = x 6 Tiểu luận môn học Lập trình trí tuệ nhân tạo Ta cần xây dựng các hàm Scheme thao tác trên ngăn xếp như sau : (empty-stack? (empty-stack)) #t (empty-stack? (push-stack x S)) #f (pop-stack (push-stack x S)) > S (top-stack (push-stack x S) > x 2. Xây dựng ngăn xếp: Có nhiểu các để biểu diễn cấu trúc dữ liệu ngăn xếp trong Scheme. Phương pháp tự nhiên hơn cả là biểu diễn ngăn xếp dưới dạng một danh sách mà các thao tác bổ sung và loại bỏ một phần tử được thực hiện ở một đầu của 7 Tiểu luận môn học Lập trình trí tuệ nhân tạo danh sách. Trong Scheme, mỗi lần bổ sung một phần tử vào danh sách kéo theo việc tạo ra một bộ đôi (dotted pair) mới: Ta có các hàm Scheme như sau: (define (empty-stack) ’()) (define empty-stack? null?) (define (push-stack x S) (cons x S)) (define (pop-stack S) (if (empty-stack? S) (display ”ERROR: stack is empty!”) (cdr S))) (define (top-stack S) (if (empty-stack? S) (display ”ERROR: stack is empty!”) (car S))) III. Ví dụ minh hoạ vận dụng ngăn xếp để chuyển một số hệ thập phân sang hệ nhị phân Ta biết rằng dữ liệu lưu trong bộ nhớ của máy tính đều được biểu diễn nhị phân. Như vậy nghĩa là các số xuất hiện trong chương trình đều phải chuyển đổi từ thập phân sang nhị phân trước khi thực hiện các phép xử lý. 8 Tiểu luận môn học Lập trình trí tuệ nhân tạo Đối với hệ thập phân: khi ta viết 437 thì nó biểu diễn con số mà giá trị là 4.10 2 + 3.10 1 + 7.10 0 Với số ở hệ nhị phân cũng tương tự. Chẳng hạn: 11010111 2 thì biểu diễn số: 1.2 7 + 1.2 6 + 0.2 5 + 1.2 4 + 0.2 3 + 1.2 2 + 1.2 1 + 1.2 0 = (215) 10 Khi đổi một số nguyên từ hệ thập phân sang hệ nhị phân thì người ta dùng phép chia liên tiếp cho 2 và lấy số dư (là các chữ số nhị phân) theo chiều ngược lại. Ví dụ: 9 215 1 2 107 1 2 53 1 2 26 0 2 13 1 2 6 0 2 3 1 2 1 1 2 0  11010111 2 437 1 2 218 0 2 109 1 2 54 0 2 27 1 2 13 1 2 6 0 2 3 1 2 0  110110101 2 1 1 2 0 Tiểu luận môn học Lập trình trí tuệ nhân tạo Như vậy rõ ràng trong cách biến đổi này các số dư được tạo ra sau lại được hiển thị trước. Cơ chế sắp xếp này chính là cơ chế của Stack. Để thực hiện biến đổi ta sẽ dùng một Stack để lưu trữ số dư qua từng phép chia: Khi thực hiện phép chia thì nạp số dư vào Stack, sau đó lấy chúng lần lượt từ Stack ra. Ví dụ: với số (26) 10  (0 1 0 1 1) = (11010) 2 PUSH 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 POP 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0 10 [...]... gcd(4,6,N) N=2 Yes ?- gcd(8,9,N) N=1 Yes 13 Tiểu luận môn học Lập trình trí tuệ nhân tạo ?- gcd(5,15,N) N=5 Yes Cách 2: ucln(A,0,A) ucln(A,B,N):-A . thành tiểu luận này. Nhóm học viên thực hiện: Đặng Ngọc Tuấn Lê Công Vượng Trần Lương Vương 3 Tiểu luận môn học Lập trình trí tuệ nhân tạo MỤC LỤC §ång Híi, 02/2013 1 4 Tiểu luận môn học Lập trình. creep 15 Tiểu luận môn học Lập trình trí tuệ nhân tạo TÀI LIỆU THAM KHẢO [1] PGS. TS. Phan Huy Khánh – Lập trình hàm - Nhà xuất bản Khoa học kỹ thuật. [2] PGS. TS. Phan Huy Khánh – Lập trình Logic. 0 0 0 POP 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0 10 Tiểu luận môn học Lập trình trí tuệ nhân tạo Phần II BÀI TOÁN LẬP TRÌNH HÀM Đề tài: Hãy viết chương trình Scheme mô phỏng các hàm đệ quy thực hiện kiểm

Ngày đăng: 06/07/2015, 10:02

Từ khóa liên quan

Mục lục

  • §ång Híi, 02/2013

Tài liệu cùng người dùng

Tài liệu liên quan