Hotline: 024.62511017

024.62511081

  Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (726 bài viết)
  • Hỗ trợ khách hàng (498 bài viết)
  • Thông tin tuyển dụng (57 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Sản phẩm mới (216 bài viết)
  • Dành cho Giáo viên (549 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (156 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (127 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (183 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (70 bài viết)
  • Cùng học (92 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (78 bài viết)
  • School@net 15 năm (154 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (124 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (363 bài viết)
  • Các vấn đề giáo dục (1210 bài viết)
  • Bài học trực tuyến (1037 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (275 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (180 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8223 bài viết)
  •  
    Đăng nhập/Đăng ký
    Bí danh
    Mật khẩu
    Mã kiểm traMã kiểm tra
    Lặp lại mã kiểm tra
    Ghi nhớ
     
    Quên mật khẩu | Đăng ký mới
     
    Thành viên có mặt
    Khách: 13
    Thành viên: 0
    Tổng cộng: 13
     
    Số người truy cập
    Hiện đã có 89722951 lượt người đến thăm trang Web của chúng tôi.

    Áp dụng thuật toán Quy hoạch động cho bài toán chiếc túi xách

    Ngày gửi bài: 01/09/2009
    Số lượt đọc: 5910

    Bài toán: Một tên trộm sau khi đột nhập vào nhà thì thấy có N loại đồ vật có kích thước và giá trị khác nhau. Vật gì hắn ta cũng muốn mang đi, nhưng lại chỉ mang một chiếc túi có dung lượng M (có thể chứa được một số đồ vật sao cho tổng kích thước chỉ nhỏ hơn hay bằng M). Vấn đề đặt ra cho tên trộm là hắn phải chọn lựa một danh sách các đồ vật sẽ mang đi sao cho tổng giá trị lấy cắp là lớn nhất.

    Chúng ta sẽ cùng xét trường hợp tên trộm mang chiếc túi xách có dung lượng ví dụ là 17 và trong phòng đột nhập có các đồ vật thuộc 5 loại khác nhau mà kích thước và giá trị được liệt kê như ở hình dưới:

    Khi đó tên trộm có thể mang đi 5 đồ vật loại A với tổng giá trị là 20, hay tên trộm có thể chất đầy túi với một đồ vật là D và một đồ vật là E với tổng giá trị (i) đạt được là cost[i-size[j]] + val[j] (vì đồ vật j thêm vào sẽ làm đầy phần còn lại của túi có dung lượng I). Nếu giá trị mới này vượt quá cost[i] (giá trị lớn nhất túi xách dung lượng i có thể đạt được khi không có đồ vật j) thì chúng ta sẽ cập nhật cost[i] và best[i]. Hình dưới đây sẽ minh hoạ từng bước quá trình tính toán trên ví dụ của chúng ta:

    Nội dung thực sự của phương án tối ưu (danh sách các đồ vật cần bỏ vào túi xách) có thể tìm lại được dựa vào các giá trịtrong mảng best. Theo định nghiữa, best[M] cho biết đồ vật cuối cùng phải thêm vào túi xách, vậy đồ vật vừa được bỏ vào túi trước đó là best[M-size[best[M]]], cứ lần ngược như vậy ta sẽ có danh sách các đồ vật trong túi xách với tổng giá trị lớn nhất. Đối với ví dụ của chúng ta ở trên, best[17]= C, sau đó ta có best[10]=C và best[3] = A.

    *** Thời gian giải quyết bài toán túi xách bằng phương pháp quy hoạch động tỷ lệ với NM.

    Do vậy bài toán túi xách có thể giải quyết dễ dàng khi M không quá lớn, nhưng thời gian thi hành chương trình sẽ trở nên khó chấp nhận khi M lớn. Hơn nữa, có một điểm cốt yếu không thể bỏ qua đó là phương pháp quy hoạch động không thể thực hiện được nếu M và những kích thước hay giá trị của các đồ vật là số thực thay vì số nguyên. Đây không phải là rắc rối nhỏ mà là khó khăn chính của phương pháp này.

    Tất nhiên, nếu dung lượng, kích thước và các giá trị của các đồ vật đều là số nguyên, chúng ta có được một nguyên lý cơ bản là quyết định tối ưu, khi đã được chọn thì không cần thay đổi. Một khi đã biết cách tốt nhất để bỏ đồ vào túi xách có kích thước bất kỳ với j đồ vật ban đầu, ta không cần xem xét lại những vấn đề đó nữa, bất kể những đồ vật sẽ chọn tiếp theo là gì. Khi nào nguyên lý tổng quát này còn hoạt động được, thì phương pháp quy hoạch động còn ứng dụng được. Trong trường hợp này, nguyên lý hoạt động được ví với các giá trị nguyên ta có thể chọn được một quyết định chính xác, tối tưu.

    Bài toán chiếc túi xách có thể được tổng hợp lại như sau:
    Có N loại đồ vật, mỗi loại có số lượng không hạn chế. Đồ vật loại Îi, đặc trưng bởi trọng lượng Wi và giá trị sử dụng Vi, với mọi i{1,..,n}. Cần chọn các vật này đặt vào một chiếc túi xách có giới hạn trọng lượng M, sao cho tổng giá trị sử dụng các vật được chọn là lớn nhất.
    Dưới đây là cài đặt của thuật toán:
    void Try(int i)
    {
    int j, t, g;
    t = (int)((m-Tl)/w[i]);
    for (j = t; j >=0 ; j--)
    {
    x[i] = j;
    Tl = Tl + w[i]*x[i]; //Trong luong thu duoc
    S = S + v[i]*x[i]; //Gia tri thu duoc
    if(i==n) //Cap nhat toi uu
    {
    if(S > Gttu)
    {
    Gan();
    Gttu = S;
    }
    }
    Else
    {
    g = S + v[i+1]*(m-Tl)/w[i+1]; //Danh gia can
    if ( g > Gttu)
    Try(i+1);
    }
    Tl = Tl - w[i]*x[i];
    S = S - v[i]*x[i];
    }
    }
    //*************
    void Init()
    {
    for (int i = 1; i <= n; i++)
    {
    Patu[i] = 0;
    x[i] = 0;
    }
    S = 0;
    Gttu = 0;
    Tl = 0;
    }

    School@net



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 804 - Nhà 17T1 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Phone: 024.62511017 - 024.62511081
    Email: kinhdoanh@schoolnet.vn


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.