Home / ອານກໍລິກທຶມ / Graphs
ກຣາບເປັນໂຄງສ້າງຂໍ້ມູນພື້ນຖານທີ່ໃຊ້ໃນວິທະຍາສາດຄອມພິວເຕີເພື່ອສະແດງເຖິງການລວບລວມວັດຖຸ ແລະ ຄວາມສຳພັນຂອງພວກມັນ. ກຣາຟປະກອບດ້ວຍສອງອົງປະກອບຕົ້ນຕໍ: ແນວຕັ້ງ (ຍັງເອີ້ນວ່າຂໍ້) ແລະຂອບ. Vertices ແມ່ນວັດຖຸທີ່ເປັນຕົວແທນ, ແລະແຄມແມ່ນຄວາມສໍາພັນລະຫວ່າງພວກມັນ.
ຂອບສາມາດຖືກຊີ້ທາງຫຼືບໍ່ຖືກທິດທາງ. ໃນກາຟທີ່ຊີ້ບອກ, ແຕ່ລະຂອບມີທິດທາງທີ່ກ່ຽວຂ້ອງກັບມັນ, ຊີ້ໃຫ້ເຫັນເຖິງຄວາມສໍາພັນທາງດຽວລະຫວ່າງສອງຈຸດ. ໃນກາຟທີ່ບໍ່ມີທິດທາງ, ແຄມບໍ່ມີທິດທາງທີ່ກ່ຽວຂ້ອງກັບພວກມັນ, ສະແດງເຖິງຄວາມສໍາພັນສອງທາງລະຫວ່າງສອງຈຸດ.
ກຣາບສາມາດຖືກໃຊ້ເພື່ອສ້າງແບບຈໍາລອງລະບົບໂລກທີ່ແທ້ຈິງໄດ້ຫຼາກຫຼາຍຊະນິດ, ລວມທັງເຄືອຂ່າຍສັງຄົມ, ລະບົບການຂົນສົ່ງ, ແລະເຄືອຂ່າຍຄອມພິວເຕີ. ພວກມັນຍັງຖືກໃຊ້ໃນຫຼາຍສູດການຄິດໄລ່ເຊັ່ນ: ສູດການຄິດໄລ່ເສັ້ນທາງທີ່ສັ້ນທີ່ສຸດ, ສູດການຄິດໄລ່ຕົ້ນໄມ້ຂັ້ນຕໍ່າສຸດ, ແລະຂັ້ນຕອນການໄຫຼຂອງເຄືອຂ່າຍ.
ມີຫຼາຍປະເພດຂອງກາຟ, ລວມທັງກາຟນ້ໍາຫນັກ (ທີ່ແຕ່ລະແຂບມີນ້ໍາຫນັກທີ່ກ່ຽວຂ້ອງກັບມັນ), ເສັ້ນສະແດງ bipartite (ບ່ອນທີ່ vertices ສາມາດແບ່ງອອກເປັນສອງຊຸດ disjoint), ແລະກາຟ acyclic (ບ່ອນທີ່ບໍ່ມີວົງຈອນໃນກາຟ) .
ກຣາບສາມາດສະແດງໄດ້ໂດຍໃຊ້ຕາຕະລາງທີ່ຢູ່ຕິດກັນ ຫຼືລາຍການທີ່ຢູ່ຕິດກັນ. ມາຕຣິກເບື້ອງຕິດກັນແມ່ນອາເຣສອງມິຕິທີ່ແຖວ ແລະຖັນເປັນຕົວແທນຂອງແນວຕັ້ງ, ແລະຄ່າຕ່າງໆເປັນຕົວແທນຂອງຂອບ. ບັນຊີລາຍຊື່ທີ່ຢູ່ຕິດກັນແມ່ນບັນຊີລາຍຊື່ຂອງບັນຊີລາຍຊື່, ເຊິ່ງແຕ່ລະບັນຊີລາຍຊື່ເປັນຕົວແທນຂອງຂອບທີ່ເຊື່ອມຕໍ່ກັບຈຸດສູງສຸດໂດຍສະເພາະ.
ຄວາມເຂົ້າໃຈກ່ຽວກັບຄຸນສົມບັດແລະປະເພດຂອງກາຟແມ່ນສໍາຄັນສໍາລັບການຂຽນໂປລແກລມທີ່ມີປະສິດທິພາບແລະສໍາລັບການເລືອກໂຄງສ້າງຂໍ້ມູນທີ່ເຫມາະສົມກັບຄໍາຮ້ອງສະຫມັກທີ່ກໍານົດໄວ້.
ມີຫຼາຍປະເພດຂອງກາຟ, ແຕ່ລະຄົນມີຄຸນສົມບັດແລະຄໍາຮ້ອງສະຫມັກທີ່ເປັນເອກະລັກຂອງຕົນເອງ. ນີ້ແມ່ນບາງປະເພດຂອງກາຟທົ່ວໄປທີ່ສຸດ:
Directed Graph: ກຣາຟຊີ້ທາງ, ເຊິ່ງເອີ້ນກັນວ່າ digraph, ແມ່ນກາຟທີ່ຂອບມີທິດທາງທີ່ກ່ຽວຂ້ອງກັບພວກມັນ. ນີ້ຫມາຍຄວາມວ່າແຕ່ລະຂອບໄປຈາກຈຸດຫນຶ່ງ (ແຫຼ່ງ) ໄປອີກຈຸດຫນຶ່ງ (ຈຸດຫມາຍປາຍທາງ).
Undirected Graph: ກຣາຟທີ່ບໍ່ມີທິດທາງແມ່ນກາຟທີ່ຂອບບໍ່ມີທິດທາງທີ່ກ່ຽວຂ້ອງກັບພວກມັນ. ນີ້ຫມາຍຄວາມວ່າແຕ່ລະຂອບເຊື່ອມຕໍ່ສອງແນວຕັ້ງໂດຍບໍ່ໄດ້ລະບຸແຫຼ່ງຫຼືຈຸດຫມາຍປາຍທາງ.
Weighted Graph: ເສັ້ນສະແດງນ້ຳໜັກແມ່ນກາຟທີ່ແຕ່ລະຂອບມີນ້ຳໜັກ ຫຼື ຄ່າໃຊ້ຈ່າຍທີ່ກ່ຽວຂ້ອງກັບມັນ. ນ້ຳໜັກເຫຼົ່ານີ້ສາມາດສະແດງເຖິງໄລຍະທາງ, ຄ່າໃຊ້ຈ່າຍ, ຫຼືປະລິມານອື່ນໆທີ່ກ່ຽວຂ້ອງກັບແອັບພລິເຄຊັນ.
Bipartite Graph: ກຣາຟ bipartite ແມ່ນເສັ້ນສະແດງທີ່ຈຸດຕັ້ງສາມາດແບ່ງອອກເປັນສອງຊຸດທີ່ບໍ່ຕິດກັນ. ຂອບທັງໝົດເຊື່ອມຕໍ່ຈຸດຕັ້ງຈາກຊຸດໜຶ່ງໄປຫາຈຸດຕັ້ງໃນຊຸດອື່ນ.
Graph ສົມບູນ: ເສັ້ນສະແດງທີ່ສົມບູນແມ່ນເສັ້ນສະແດງທີ່ທຸກໆຄູ່ຂອງຈຸດເຊື່ອມຕໍ່ຖືກເຊື່ອມຕໍ່ດ້ວຍຂອບ.
ຕົ້ນໄມ້: ຕົ້ນໄມ້ແມ່ນເສັ້ນສະແດງ acyclic ເຊື່ອມຕໍ່. ມັນບໍ່ມີຮອບວຽນແລະມີແທ້ຫນຶ່ງເສັ້ນທາງລະຫວ່າງສອງຈຸດຕັ້ງ.
Cyclic Graph: ກຣາຟວົງຈອນແມ່ນກາຟທີ່ປະກອບດ້ວຍຢ່າງໜ້ອຍໜຶ່ງຮອບ, ເຊິ່ງເປັນເສັ້ນທາງທີ່ເລີ່ມຕົ້ນ ແລະສິ້ນສຸດຢູ່ຈຸດສູງສຸດດຽວກັນ.
Acyclic Graph: ກຣາຟ acyclic ແມ່ນກາຟທີ່ບໍ່ມີຮອບວຽນ.
Planar Graph: ກຣາບ Planar ແມ່ນກາຟທີ່ສາມາດແຕ້ມຢູ່ເທິງຍົນໄດ້ໂດຍບໍ່ມີຂອບຂ້າມ.
Hypergraph: hypergraph ແມ່ນເສັ້ນສະແດງທີ່ແຕ່ລະຂອບສາມາດເຊື່ອມຕໍ່ຫຼາຍກວ່າສອງຈຸດ.
ຄວາມເຂົ້າໃຈກ່ຽວກັບຄຸນສົມບັດແລະປະເພດຂອງກາຟແມ່ນສໍາຄັນສໍາລັບການຂຽນໂປລແກລມທີ່ມີປະສິດທິພາບແລະສໍາລັບການເລືອກໂຄງສ້າງຂໍ້ມູນທີ່ເຫມາະສົມກັບຄໍາຮ້ອງສະຫມັກທີ່ກໍານົດໄວ້.
Graphs ສະຫນັບສະຫນູນບາງການດໍາເນີນງານພື້ນຖານທີ່ຖືກນໍາໃຊ້ທົ່ວໄປໃນການດໍາເນີນໂຄງການ. ນີ້ແມ່ນບາງການດໍາເນີນງານທີ່ສໍາຄັນທີ່ສຸດ:
ແຊກ: ການເພີ່ມຈຸດ ຫຼື ຂອບໃໝ່ໃສ່ກຣາຟ.
ການລຶບ: ການຖອນຈຸດ ຫຼື ຂອບອອກຈາກກຣາຟ.
ເສັ້ນທາງຜ່ານ: ການໄປຢ້ຽມຢາມແຕ່ລະຈຸດໃນກາຟໃນຄໍາສັ່ງສະເພາະ. ມີສອງປະເພດຕົ້ນຕໍຂອງການຂ້າມຜ່ານ:
ໄລຍະຂ້າມຜ່ານຄວາມເລິກຄັ້ງທຳອິດ: ໄປຢ້ຽມຢາມຈຸດຍອດໃນລັກສະນະຄວາມເລິກກ່ອນ, ບ່ອນທີ່ພວກເຮົາສຳຫຼວດເທົ່າທີ່ເປັນໄປໄດ້ຕາມແຕ່ລະສາຂາກ່ອນທີ່ຈະຕິດຕາມ.
Breadth-first traversal: ການໄປຢ້ຽມຢາມຈຸດຍອດໃນລັກສະນະທີ່ກວ້າງ-first, ບ່ອນທີ່ພວກເຮົາຄົ້ນຫາຈຸດສູງສຸດທັງຫມົດຢູ່ທີ່ຄວາມເລິກໃນປະຈຸບັນກ່ອນທີ່ຈະກ້າວໄປສູ່ຄວາມເລິກຕໍ່ໄປ.
ເສັ້ນທາງສັ້ນທີ່ສຸດ: ຊອກຫາເສັ້ນທາງທີ່ສັ້ນທີ່ສຸດລະຫວ່າງສອງຈຸດໃນກາຟ, ບ່ອນທີ່ຄວາມຍາວຂອງເສັ້ນທາງຖືກວັດແທກເປັນຜົນລວມຂອງນ້ໍາຫນັກຂອບ.
Minimum Spanning Tree: ຊອກຫາຕົ້ນໄມ້ທີ່ກວ້າງຕໍ່າສຸດຂອງເສັ້ນກຣາຟ, ເຊິ່ງເປັນຕົ້ນໄມ້ທີ່ເຊື່ອມຕໍ່ບັນດາແນວຕັ້ງທັງໝົດດ້ວຍນ້ຳໜັກຂອບຂັ້ນຕ່ຳ.
ການເຊື່ອມຕໍ່: ການກໍານົດວ່າກາຟແມ່ນເຊື່ອມຕໍ່, ຊຶ່ງຫມາຍຄວາມວ່າມີເສັ້ນທາງລະຫວ່າງສອງຈຸດ.
ການກວດຫາຮອບວຽນ: ການກໍານົດວ່າກາຟມີຮອບວຽນໃດ.
ຄວາມສັບສົນທີ່ໃຊ້ເວລາຂອງການດໍາເນີນງານເຫຼົ່ານີ້ແມ່ນຂຶ້ນກັບການປະຕິບັດສະເພາະຂອງກາຟ. ຕົວຢ່າງ, ການປະຕິບັດການແຊກ ແລະການລຶບໃນລາຍການທີ່ຢູ່ຕິດກັນໃຊ້ເວລາ O(1) ໂດຍສະເລ່ຍ, ໃນຂະນະທີ່ການດໍາເນີນການດຽວກັນຢູ່ໃນຕາຕະລາງທີ່ຢູ່ຕິດກັນໃຊ້ເວລາ O(n^2), ບ່ອນທີ່ n ແມ່ນຈໍານວນຈຸດຕັ້ງຢູ່ໃນກຣາບ. ເສັ້ນທາງຜ່ານ, ເສັ້ນທາງທີ່ສັ້ນທີ່ສຸດ, ແລະຂັ້ນຕອນວິທີທາງຕົ້ນໄມ້ຂັ້ນຕ່ຳໂດຍປົກກະຕິຈະໃຊ້ເວລາ O(V E), ບ່ອນທີ່ V ແມ່ນຈຳນວນຂອງແນວຕັ້ງ ແລະ E ແມ່ນຈຳນວນຂອບໃນກາຟ.
ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະເລືອກເອົາປະເພດທີ່ເຫມາະສົມຂອງກາຟແລະການປະຕິບັດສໍາລັບຄໍາຮ້ອງສະຫມັກທີ່ກໍານົດໄວ້ໂດຍອີງໃສ່ຄວາມຕ້ອງການສະເພາະຂອງບັນຫາທີ່ມີຢູ່ໃນມື. ຕົວຢ່າງ, ເສັ້ນສະແດງທີ່ມີນ້ໍາຫນັກເປັນປະໂຫຍດສໍາລັບການສ້າງແບບຈໍາລອງໄລຍະຫ່າງຫຼືຄ່າໃຊ້ຈ່າຍລະຫວ່າງຈຸດ, ໃນຂະນະທີ່ກາຟ bipartite ແມ່ນເປັນປະໂຫຍດສໍາລັບການສ້າງແບບຈໍາລອງຄວາມສໍາພັນລະຫວ່າງສອງຊຸດຂອງວັດຖຸ.