Tôi có một khu rừng, tức là các nút có các cạnh được định hướng và không có chu kỳ (có hướng hoặc không được định hướng). Tôi xác định chiều cao của đỉnh là 0 nếu nó không có bất kỳ cạnh nào hoặc số cạnh tối đa để di chuyển ngược lại để đạt đến đỉnh có chiều cao 0.
Tôi cũng biết rằng mức độ trung bình của một nút là một hằng số nhỏ, giả sử là 2 hoặc hơn. Để tìm chiều cao của tất cả các đỉnh, tôi có thể nghĩ đến hai thuật toán:
Thuật toán đi bộ
- Đi qua và đánh dấu cho các đỉnh không có cạnh đến.
- Đối với mỗi đỉnh có , hãy theo các cạnh đi, cập nhật chiều cao của mỗi đỉnh gặp phải nếu chiều cao trước đó nhỏ hơn.
Thuật toán biên giới
- Đi qua và đánh dấu cho các đỉnh không có cạnh đến và đánh dấu chúng là biên giới.
- Đối với mọi đỉnh biên giới, hãy xem cha mẹ của nó có con ở hoặc dưới biên giới hay không, nếu có, hãy đánh dấu cha mẹ là cộng với chiều cao lớn nhất trong số các con của nó. Đánh dấu cha mẹ là ở biên giới.
- Lặp lại 2 cho đến khi không có gì ngoài biên giới.
Những câu hỏi của tôi:
- Có một tên cho vấn đề này, và một giải pháp nhanh nhất được biết đến?
- Tôi có xu hướng nghĩ đơn giản là đi lên từ tất cả các đỉnh là giải pháp nhanh nhất. Tôi có đúng không