ĐÁNH GÁ THUẬT TOÁN

Một phần của tài liệu Các phép toán thực hiện trên ma trận thực (Trang 28 - 30)

Trong chương trinh ta có sử dụng thuật toán là : duyệt tuần tự các phần tử trên đường chéo chính của ma trận C và khi tính hạng ta cũng sử dụng phương pháp duyệt để tìm các hàng khác không. Ta đánh giá độ phức tạp tính toán như sau :

1.1 Duyệt các phần tử trên đường chéo chính.

Đối với giải thuật này chính là phép di chuyển con trỏ dùng để duyệt và so sánh với 0 .Nếu tìm được phần tử bằng không thì thuật toán dừng và kết luận . Do duyệt tuần tự nên số phép dịch chuyển bằng số phép so sánh . Giả sử ma trận là cấp n thì sẽ có n lần duyệt danh sách :

+ Trong trường hợp tốt nhất :( phần tử đầu tiên C[ 1 ][ 1 ] = 0 ) Tại bất cứ lần duyệt nào cũng chỉ làm một phép so sánh. Độ phức tạp tính toán trong trường hợp này là : T(n) = O(1). + Trong trường hợp xấu nhất :(duyệt đến tận phần tử cuối C[ n ][ n ] =0)

Tổng số phép so sánh :n

Độ phức tạp tính toán : T(n) = O(n)

+ Trong trường hợp trung bình : ( Coi các phần tử có xác suất xuất hiện là số không tại các vị trí là như nhau )

Tức là số phép so sánh trung bình lúc này là n/2. Độ phức tạp tính toán là : T(n) = O(n)

1.2 Phương pháp duyệt từng hàng để tìm hạng

Số bước duyệt trong giải thuật này phụ thuộc vào ma trận được nhập.Quá trình duyệt là xuất phát từ phần tử A[ n ][ n ].( giả sử ma trận cấp n) + Trong trường hợp tốt nhất :( phần tử đầu tiên C[ n ][ n ] = 0 )

Ta chỉ cần làm một phép so sánh.

Độ phức tạp tính toán trong trường hợp này là : T(n) = O(1).

+ Trong trường hợp xấu nhất : (ta phải duyệt đến hàng đầu tiên của ma trận ) Tại lần duyệt thứ i cần làm i phép so sánh. Tổng số lượng phép so sánh : ∑n i 1 = 2 ) 1 ( * nn Độ phức tạp tính toán là : T(n) = O(n2)

+ Trong trường hợp trung bình :( Các phần tử có xác suất xuất hiện tại các vị trí là như nhau như vậy tại bước thứ i cần so sánh i/2 lần

Tổng số phép so sánh là : ∑n i 2 2 / = 4 2 *n+nn Độ phức tạp tính toán là : T(n) = O(n2) II . ĐÁNH GIÁ CHƯƠNG TRÌNH

Chương trình đã giải quyết được các vấn đề mà đề tài yêu cầu, tạo được giao diện để sử dụng và cho phép sử dụng nhiều dạng dữ liệu để đánh giá chương trình một cách toàn diện.

Sau khi cho chạy thử với bộ dữ liệu đầu vào khác nhau thì thu được một số đánh giá sau :

Tốc độ :

Ma trận nhập vào với kích thước lớn ( <=.15 ) thì việc tính toán cộng , trừ nhân hai ma trận là không lâu lắm .Tốc độ tính toán trong giải thuật tính định thức và tìm hạng của ma trận với kích thước nhỏ là không lâu

lắm.Tuy nhiên việc hiển thị ra file trên fỏm của C thì phải tiến hành cắt các trường thông tin nên hiển thị file chậm hơn so với Pascal. Điều này không phải do giải thuật mà do việc xử lý trên file text.

Độ tin cậy :

Chương trình cho kết quả đúng với nhiều dữ liệu đầu vào khác nhau nhưng chỉ với các ma trận có kích thước (<=15).Tuy nhiên với ma trận có kích thước lớn thì em chưa xử lý được. Trong quá trình tính định thức của ma trận vuông thì việc tính toán cũng chỉ áp dụng được với các ma trận có kích thước nhỏ(<=7),nếu ma trận có kích thước lớn thì tính toán sẽ gặp sai số và ảnh hưởng đến kết quả cũng như hạng của ma trận

Lời tựa :

Trong quá trình làm đề tài này dù em đã cố gắng rất nhiều nhưng cũng không thể tránh khỏi những thiếu xót và một số vấn đề chưa giải quyết được .Em rất mong sự giúp đỡ của cô giáo để hoàn thiện chương trình này hơn.

TÀI LIỆU THAM KHẢO

1. Giáo trình Phương pháp tính ( Tác giả : Dương Thùy Vĩ )

2. Giải tích số ( Tác giả : Lê Trọng Vinh )

3. Toán cao cấp - Tập 1 ( Đại số và hình giải tích ) Tác giả : Nguyễn Đình Trí ( chủ biên) Tạ Văn Đĩnh- Nguyễn Hồ Quỳnh

Một phần của tài liệu Các phép toán thực hiện trên ma trận thực (Trang 28 - 30)