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ó 89735487 lượt người đến thăm trang Web của chúng tôi.

    Xây dựng cây khung nhỏ nhất của đồ thị

    Ngày gửi bài: 30/06/2008
    Số lượt đọc: 4532

    Lý thuyết đồ thị là một lĩnh vực toán học được nghiên cứu từ rất lâu, những ý tưởng cơ bản của nó được đưa ra từ thế kỷ XVIII bởi nhà toán học lỗi lạc người thuỵ sĩ Leonhard Euler. Đặc biệt trong những thập niên gần đây, cùng với sự ra đời của máy tính điện tử, sự phát triển nhanh chóng của khoa học máy tính, lý thuyết đồ thị ngày càng được quan tâm nghiên cứu nhiều hơn. Các thuật toán trên đồ thị được ứng dụng trong rất nhiều lĩnh vực khác nhau như: Mạng máy tính, Vật lý vật chất ngưng tụ, Lý thuyết mã hóa, Tối ưu hoá, Kinh tế học…

    Bài toán tìm cây khung nhỏ nhất (hay cây khung tối thiểu - Minimum Spanning Tree - MST) của đồ thị vô hướng liên thông có trọng số là một bài toán tối ưu nổi tiếng và có ứng dụng rất lớn. Cho G=(V,E) là đồ thị vô hướng liên thông có trọng số, với một cây khung T của G, ta gọi trọng số của cây T là tổng trọng số các cạnh. Bài toán đặt ra là trong số các cây khung của G, chỉ ra cây khung T có trọng số nhỏ nhất, T gọi là cây khung nhỏ nhất của đồ thị G (hình 2). Đã có nhiều thuật toán được tìm ra để giải quyết vấn đề này: Kruskal, Prim, Karger-Klein-Tarjan…, trong đó, một thuật toán rất hiệu quả và được tìm ra sớm nhất là thuật toán Sollin.

    Thuật toán này lần đầu tiên được công bố bởi Otakar Boruvka năm 1926 như một phương pháp hiệu quả để thiết kế các mạng điện. Sau đó nó được các nhà khoa học khác tìm ra: Choquet năm 1938, Florek, Lukasiewicz, Perkal, Steinhaus, and Zubrzycki năm 1951, và một lần nữa nó được công bố bởi Sollin năm 1960. Vì Sollin là một nhà khoa học máy tính nên trong các tài liệu trình bày về thuật toán này, đặc biệt là các tài liệu về tính toán song song, nó thường được gọi với cái tên Sollin's algorithm. Thuật toán được trình bày dưới dạng giả mã như sau:

    Quá trình dựng cây khung nhỏ nhất theo thuật toán sollin đuợc thực hiện bằng cách, coi mỗi đỉnh của đồ thị là nút gốc của một cây, khi đó ta được một rừng và khởi tạo cây khung T ban đầu không có cạnh nào. Tiếp theo, với mỗi một cây ta lựa chọn cạnh nối một nút trong cây với một nút của cây khác (để đảm bảo không tạo ra chu trình trong T) có trọng số nhỏ nhất (hình 3b) thêm vào cây khung T, cập nhật hai cây có cạnh nối với nhau tạo thành một cây. Lặp lại quá trình này cho đến khi T có N-1 cạnh và cây khung được dựng hoàn chỉnh (hình 3c).

    Ta sẽ cài đặt thuật toán Sollin bằng ngôn ngữ C++. Chương trình sau được viết và biên dịch trên MS Visual Studio 2005, tuy nhiên nếu máy tính của bạn đang dùng Linux, bạn có thể biên dịch nó với Dev-C++. Sau khi kởi động Ms Visual Studio bạn chọn kiểu Project C++ và Templates là Win32 Console Application, đặt tên cho project là Sollin, soạn thảo với nội dung như sau:

    Khác với thuật toán Kruskal và Prim, Sollin lựa chọn nhiều cạnh trong mỗi một bước, và thuật toán có thể dễ dàng được song song hoá. Độ phức tạp về thời gian trung bình của thuật toán là O(E*log V) với E là số cạnh, V là số đỉnh của đồ thị. Mặc dù Sollin giản dị và thực sự hiệu quả, nhưng nó lại ít khi được đề cập đến trong các sách về cấu trúc dữ liệu và thuật toán. Hi vọng với trình bày sơ lược trên đây về thuật toán “cũ” này sẽ đem đến cho các bạn những cảm nhận thú vị “mới” về bài toán cây khung nhỏ nhất.

    ( Bùi Văn Tân - Tanbv_it@yahoo.com )

    School@net (Theo THNT)



     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.