✨Cây (lý thuyết đồ thị)

Cây (lý thuyết đồ thị)

phải|khung|Một cây có dán nhãn với 6 đỉnh và 5 cạnh

Cây là khái niệm quan trọng trong lý thuyết đồ thị, cấu trúc dữ liệu và giải thuật. Cây là một đồ thị mà trong đó hai đỉnh bất kì đều được nối với nhau bằng đúng một đường đi. Nói cách khác, đồ thị liên thông bất kỳ không có chu trình là một cây. Rừng là hợp (disjoint union) của các cây. Cây được sử dụng rộng rãi trong các cấu trúc dữ liệu của ngành khoa học máy tính như cây nhị phân, đống, trie, cây Huffman cho nén dữ liệu, v.v...

Cây tự do

Cây tự do là một đơn đồ thị, liên thông, không có chu trình.

Định lý sau cho biết các điều kiện tương đương với định nghĩa cây

Định lý - Các điều kiện cần và đủ để đồ thị là một cây

Cho đồ thị G=(V,E) có n đỉnh. Sáu mệnh đề sau là tương đương:

G là một cây;

G không có chu trình và có n-1 cạnh;

G liên thông và có n-1 cạnh;

G không có chu trình và nếu bổ sung vào một cạnh nối hai đỉnh không kề nhau thì xuất hiện một chu trình duy nhất;

G liên thông và nếu bỏ đi một cạnh bất kỳ thì G mất tính liên thông;

Mỗi cặp đỉnh trong G được nối với nhau bằng đường đi duy nhất.

Cây (có gốc)

Cây (có gốc) là cây trong đó có một đỉnh được chọn là gốc và mỗi cạnh được định hướng trùng với hướng đi của đường đi đơn duy nhất từ gốc tới mỗi đỉnh.

Trong một cây có gốc, nếu có một cạnh đi từ đỉnh x đến đỉnh y thì đỉnh x được gọi là cha của đỉnh y, y là con của x (xem đồ thị (toán học)).

Hai đỉnh cùng cha được gọi là đỉnh anh em, các đỉnh không có con tức nằm ngoài rìa cây được gọi là (đỉnh) hay đỉnh ngoài, các đỉnh còn lại gọi là đỉnh trong (kể cả đỉnh gốc).

Số cạnh trên đường đi từ gốc tới mỗi đỉnh được gọi là mức của đỉnh ấy.

Cây nhị phân và các biến thể của nó

Định nghĩa:

Cây mà mỗi đỉnh có không quá hai con được gọi là cây nhị phân (binary tree).

Biến thể: có 4 loại cơ bản

Về tên gọi tiếng Việt cho chúng: thực tế, các tài liệu Việt Nam không thống nhất cách gọi tên các cây, mỗi kiểu tài liệu lại ghi khác nhau, cách diễn giải định nghĩa cũng khác nhau,... nên chúng tôi khuyên bạn nên sử dụng tiếng Anh để gọi tên cây, trong bài này, tên của các cây được dịch theo [https://glib.hcmus.edu.vn/index.php/node/195 giáo trình Toán học tổ hợp] của Trường Đại học Khoa học Tự Nhiên - ĐHQG TP.HCM và định nghĩa cũng sẽ được ghi đơn giản nhất có thể

  • Cây nhị phân mà mỗi đỉnh chỉ có 0 hoặc 2 con được gọi là cây nhị phân đủ (full binary tree)
  • Cây nhị phân đầy đủ mà tất cả các lá có cùng một mức được gọi là cây nhị phân hoàn hảo (perfect binary tree).
  • Cây nhị phân mà từ mức 0 xuống mức h - 1cây nhị phân hoàn hảo, ở mức h thì các đỉnh được sắp từ trái sang phải được gọi là cây nhị phân hoàn thành (complete binary tree) (h là độ cao cây)
  • Cây nhị phân có mức lá là h hoặc h - 1 (h là độ cao cây) thì gọi là cây nhị phân cân bằng (hoặc cân đối).

Ứng dụng cây trong khoa học máy tính

Trong khoa học máy tính cây là một cấu trúc dữ liệu không tuyến tính.

Cấu trúc cây được ứng dụng trong các giải thuật tìm kiếm, giải thuật sắp xếp và nhiều bài toán khác

Cây dùng để biểu diễn bài toán quyết định (cây quyết định), biểu diễn quá trình tính toán các biểu thức đại số.

Các cây đặc biệt

Cây đỏ đen Cây 2-3-4 B-Cây Cây tìm kiếm nhị phân Đống (heap) Cây biểu diễn tập hợp

Biểu diễn cây

Có thể biểu diễn cây bằng mảng hoặc bằng danh sách kề. Khi biểu diễn bằng danh sách kề, mọi cây có thể chuyển sang một cây nhị phân tương đương với nó.

Các thuật toán duyệt cây

Duyệt tiền thứ tự Duyệt trung thứ tự *Duyệt hậu thứ tự

Cây khung

Mọi đơn đồ thị liên thông G có ít nhất một đồ thị con là cây và chứa tất cả các đỉnh của G. Đồ thị con này được gọi là cây khung (hoặc cây bao trùm) của G (thuật ngữ cây khung được sử dụng phổ biến hơn). Đồ thị G có thể có nhiều cây khung. Nếu G có trọng số trên các cạnh thì cây khung có tổng trọng số trên các cạnh của nó là nhỏ nhất (hoặc lớn nhất) được gọi là cây khung nhỏ nhất (hoặc lớn nhất).

Định lý

Mọi đồ thị liên thông đều có chứa ít nhất một cây bao trùm. Định lý Carley: Số cây khung của đồ thị K_nn^{n-2}

Các thuật toán tìm cây bao trùm

Thuật toán tìm cây bao trùm theo chiều rộng Thuật toán tìm cây bao trùm theo chiều sâu Thuật toán Prim Thuật toán Kruskal

Các thuật toán khác

Thuật toán vun đống Thuật toán xây dựng cây mã Huffman

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
phải|khung|Một cây có dán nhãn với 6 đỉnh và 5 cạnh **Cây** là khái niệm quan trọng trong lý thuyết đồ thị, cấu trúc dữ liệu và giải thuật. Cây là một đồ thị mà
nhỏ|phải|Hình vẽ một đồ thị có 6 đỉnh và 7 cạnh Trong toán học và tin học, **lý thuyết đồ thị** (tiếng Anh: _graph theory_) nghiên cứu các tính chất của đồ thị. Một cách
Lưu ý: Danh sách **thuật ngữ lý thuyết đồ thị** này chỉ là điểm khởi đầu cho những người mới nhập môn làm quen với một số thuật ngữ và khái niệm cơ bản. Bài
:_Bài này chỉ viết về các định nghĩa cơ bản. Để hiểu rộng hơn, xin xem lý thuyết đồ thị. Về ý nghĩa biểu diễn hàm số trên hệ tọa độ, xem đồ thị hàm
**Lý thuyết độ phức tạp tính toán** (tiếng Anh: _computational complexity theory_) là một nhánh của lý thuyết tính toán trong lý thuyết khoa học máy tính và toán học tập trung vào phân loại
Trong lý thuyết đồ thị, một **đồ thị phẳng** là một đồ thị có thể được nhúng vào mặt phẳng, tức là có thể được vẽ trên mặt phẳng sao cho các cạnh chỉ gặp
Cuốn sách Lý thuyết đồ thị và ứng dụng cài đặt bởi ngôn ngữ mạnh PYTHON gồm nội dung như sau Chương 1 Các định nghĩa, phân loại và một số khái niệm cơ bản
**Truyền thuyết đô thị Nhật Bản** là những câu chuyện được lưu truyền trong dân gian Nhật Bản và được cho là có thật, dù chưa có bằng chứng xác thực. Những truyền thuyết đô
Trong lý thuyết đồ thị, một **đồ thị hai phía đầy đủ** (tiếng Anh: Complete bipartite graph hoặc biclique) là một dạng đồ thị hai phía đặc biệt, trong đó mỗi đỉnh của tập thứ
thumb|Ví dụ về đồ thị hai phía không có chu trình Trong Lý thuyết đồ thị, **đồ thị hai phía** (**đồ thị lưỡng phân** hay **đồ thị hai phần**) (tiếng Anh: bipartite graph) là một
Trong lý thuyết đồ thị, đồ thị **Petersen** là 1 đồ thị vô hướng với 10 đỉnh và 15 cạnh. Nó thường được sử dụng làm minh họa trong khi trình bày các lý thuyết
Trong lý thuyết độ phức tạp tính toán (_Computational complexity theory_), **Đồ thị con đẳng cấu** là một bài toán quyết định (_decision problem_) thuộc loại NP-đầy đủ (_NP-complete_). Phát biểu của bài toán quyết
vừa|phải|Với _n_ bằng 5 Một đồ thị có e đỉnh, và có thể gán nhãn cho mỗi đỉnh với một số tự nhiên bất kỳ nằm giữa 0 và e sao cho: * mỗi đỉnh
khung|phải|Bản đồ Königsberg thời Euler, mô tả vị trí thực của bay cây cầu và sông Pregel. **Bài toán bảy cây cầu Euler**, còn gọi là **Bảy cầu ở Königsberg** là bài toán nảy sinh
Trong lý thuyết đồ thị, **định lý Kirchhoff**, hay **định lý Kirchhoff cho ma trận và cây**, đặt tên theo Gustav Kirchhoff, là một định lý về số cây bao trùm của một đồ thị.
nhỏ|[[Đồ thị Cayley của nhóm tự do có hai phần tử sinh. Đây là nhóm hyperbol có biên Gromov là tập Cantor. Tương tự với đồ thị Cayley, nhóm hyperbol và biên của nó là
nhỏ|Một cây bao trùm (các cạnh màu xanh) của một đồ thị lưới nhỏ|Ba ví dụ trên biểu đồ lưới 8x8 **Cây bao trùm** (tiếng Anh: _spanning tree_), còn được gọi là **cây khung**, của
**Lý thuyết về ràng buộc** (TOC) là một mô hình quản lý mà quan sát bất kỳ hệ thống quản lý nào bị giới hạn trong việc đạt được nhiều mục tiêu hơn bởi một
nhỏ|Nếu người bán hàng xuất phát từ điểm A, và nếu khoảng cách giữa hai điểm bất kì được biết thì đâu là đường đi ngắn nhất mà người bán hàng có thể thực hiện
Khái niệm của vòng phản hồi dùng để điều khiển hành vi động lực của hệ thống: đây là phản hồi âm, vì giá trị cảm biến (sensor) bị trừ đi từ giá trị mong
**Lý thuyết trò chơi**, hoặc gọi **đối sách luận**, **lí luận ván cờ**, là một phân nhánh mới của toán học hiện đại, cũng là một môn học trọng yếu của vận trù học, tác
phải|Cây bao trùm nhỏ nhất của một [[đồ thị phẳng. Mỗi cạnh có ghi kèm trọng số, cụ thể trong hình này là tỷ lệ với chiều dài.]] Với một đồ thị liên thông, vô
**Lý thuyết dòng chảy đa bước trong truyền thông** chỉ ra rằng thông tin từ phương tiện truyền thông đại chúng đến những người dẫn dắt ý kiến trước đến cộng đồng và dòng chảy
right|thumb|Đồ thị Cayley của [[nhóm tự do trên hai phần tử sinh _a_ và _b_]] Trong toán học, **đồ thị Cayley**, hay còn gọi là **đồ thị tô màu Cayley**, **biểu đồ Cayley**, **biểu đồ
**Lý thuyết dòng chảy hai bước trong truyền thông** chỉ ra rằng hầu hết mọi người hình thành quan điểm của họ dưới sự ảnh hưởng của những người dẫn dắt ý kiến (opinion leaders).
**Lý thuyết chu kỳ kinh tế thực (lý thuyết RBC)** là một loại mô hình kinh tế vĩ mô tân cổ điển, trong đó các biến động của chu kỳ kinh doanh được tính bằng
**Lý thuyết mã hóa** là nghiên cứu về các đặc tính của mã và khả năng thích ứng với các ứng dụng cụ thể của chúng. Mã được sử dụng cho nén dữ liệu, mật
Trong lý thuyết trò chơi, **cách giải** được định nghĩa là một nguyên tắc chính thống, dùng để dự đoán trò chơi sẽ diễn ra như thế nào. Những dự đoán này được gọi là
**Lý thuyết xã hội** là các khung phân tích, hay các mô hình, được sử dụng để nghiên cứu và giải thích các hiện tượng xã hội. Vốn là một công cụ được sử dụng
nhỏ|350x350px| Một trang trại đô thị ở [[Chicago ]] **Nông nghiệp** **đô thị** **, trồng trọt** **đô thị**, hoặc **làm vườn đô thị** là hoạt động trồng trọt, chế biến và phân phối thực phẩm
**Lí thuyết** là một loại chiêm nghiệm và hợp lí của cái gì đó trừu tượng hoặc khái quát hóa của suy nghĩ về một hiện tượng, hoặc kết quả của suy nghĩ như vậy.
**Thuật toán Kruskal** là một thuật toán trong lý thuyết đồ thị để tìm cây bao trùm nhỏ nhất của một đồ thị liên thông vô hướng có trọng số. Nói cách khác, nó tìm
nhỏ|phải|Hỏi: Các hình này có vẽ được một nét không? Trả lời: Được! Nhưng điểm cuối không trùng điểm xuất phát Trả lời: Được! Và điểm cuối trùng điểm xuất phát Trong lý thuyết đồ
**Thuật toán ghép cặp của Edmonds** (còn gọi là thuật toán bông hoa) là một thuật toán trong lý thuyết đồ thị để tìm cặp ghép cực đại trong đồ thị. Thuật toán được tìm
thumb|Tarjan's Algorithm Animation **Thuật Toán Tarjan** (được đặt theo tên của người tìm ra nó - Robert Tarjan) là một thuật toán trong lý thuyết đồ thị dùng để tìm thành phần liên thông mạnh
Trong lý thuyết trò chơi, **chiến lược **của người chơi là bất kì lựa chọn nào mà người chơi có thể thực hiện, trong bối cảnh kết quả thu được không chỉ phụ thuộc vào
Trong lý thuyết đồ thị, một **luồng trên mạng**, thường được gọi tắt là **luồng**, là một cách gán các luồng (dòng chảy) cho các cung của một đồ thị có hướng (trong trường hợp
Trong lý thuyết đồ thị, **ma trận Laplace**, hay còn gọi là ma trận Kirchhoff, hoặc ma trận dẫn nạp, là một cách biểu diễn đồ thị bằng ma trận. Theo định lý Kirchhoff, nó
nhỏ|310x310px|Mô phỏng tìm kiếm trên cây tìm kiếm theo thuật toán tìm kiếm theo chiều rộng Trong lý thuyết đồ thị, **tìm kiếm theo chiều rộng** (**BFS**) là một thuật toán tìm kiếm trong đồ
* CÂY là đồ thị vô hướng liên thông và không có chu trình. * RỪNG là một đồ thị gồm p thành phần liên thông, trong đó mỗi thành phần liên thông là một
phải|Một hành trình của quân mã trên bàn cờ. phải|Lời giải bài toán trên bàn cờ 5 x 5. **Mã đi tuần** hay **hành trình của quân mã** (Tiếng Anh: Knight's tour) là bài toán
[[Hình:Hypergraph-wikipedia.svg|right|frame| Một ví dụ về siêu đồ thị, với X = \{v_1, v_2, v_3, v_4, v_5, v_6, v_7\}E = \{e_1,e_2,e_3,e_4\} = \{\{v_1, v_2, v_3\}, \{v_2,v_3\}, \{v_3,v_5,v_6\}, \{v_4\}\}. ]] Trong toán học,một **siêu
**Bài toán cây Steiner** hay bài toán tìm đường đi ngắn nhất từ 2 điểm cho trước được phát triển dựa trên bài toán Fermat của nhà toán học nổi tiếng người Pháp. Vào thế
Trong toán tổ hợp, **chuỗi Prüfer** (hay **mã Prüfer**) của một cây được gán nhãn là một chuỗi duy nhất có biểu diễn cây đó. Chuỗi Prüfer của một cây _n_ đỉnh có độ dài
Một cây dây xích **Cây dây xích** (tiếng Anh: _caterpillar tree_) là cây chứa đường đi đơn sao cho mọi đỉnh không thuộc đường đi là liền kề với đỉnh thuộc đường đi. Nói một
nhỏ|Ví dụ về một cây nhị phân Trong khoa học máy tính, **cây** là một cấu trúc dữ liệu được sử dụng rộng rãi gồm một tập hợp các nút (tiếng Anh: _node_) được liên
nhỏ|Đứa con tý hon bên trong một tinh trùng (hình vẽ của Nicolaas Hartsoeker, năm 1695) Trong sinh học, **lý thuyết tiền tạo thành** là một lý thuyết nay đã lỗi thời, nhưng rất phổ
**Phủ Lý** là thành phố tỉnh lỵ cũ của tỉnh Hà Nam cũ, Việt Nam, nay là phường Phủ Lý thuộc tỉnh Ninh Bình. ## Địa lý ### Vị trí địa lý Thành phố Phủ
thumb|Một cây nhị phân được gắn nhãn có kích thước là 9 và chiều cao là 3, với nút gốc có giá trị là 2. Cây trên không cân bằng và không được sắp xếp.
**Tìm kiếm ưu tiên chiều sâu** hay **tìm kiếm theo chiều sâu** () là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một