Saya memiliki hutan, yaitu node dengan tepi terarah dan tanpa siklus (terarah atau tidak terarah). Saya mendefinisikan ketinggian suatu simpul sebagai 0 jika tidak memiliki tepi masuk, atau jumlah tepi maksimum untuk dilalui secara terbalik untuk mencapai puncak ketinggian 0.
Saya juga tahu bahwa derajat rata-rata sebuah simpul adalah konstanta kecil, katakanlah 2 atau lebih. Untuk menemukan ketinggian semua simpul, saya dapat memikirkan dua algoritma:
Algoritma Berjalan
- Pergi melalui dan tandai untuk simpul tanpa tepi masuk.
- Untuk setiap simpul dengan , ikuti tepi keluar, perbarui ketinggian setiap simpul yang ditemui jika ketinggian sebelumnya lebih kecil.
Algoritma Perbatasan
- Pergi melalui dan tandai untuk simpul tanpa tepi masuk, dan tandai ini sebagai perbatasan.
- Untuk setiap titik perbatasan, lihat apakah orang tuanya memiliki anak di atau di bawah batas, Jika ya, tandai orang tua memiliki ditambah tinggi terbesar di antara anak-anaknya. Tandai orang tua sebagai berada di perbatasan.
- Ulangi 2 sampai tidak ada apa-apa di luar perbatasan.
Pertanyaan saya:
- Apakah ada nama untuk masalah ini, dan solusi tercepat yang terkenal?
- Saya cenderung berpikir hanya berjalan dari semua simpul adalah solusi tercepat. Apakah saya benar?