เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบŸ: เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปเบฅเบฐเบชเบญเบ‡เบญเบฑเบ™ "เป€เบเบทเบญเบšเปƒเบซเบกเปˆ"

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเป†เบ—เปˆเบฒเบ™.

เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบฅเบฒเบเบŠเบทเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบŸเปƒเบ™เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ„เบญเบกเบžเบดเบงเป€เบ•เบต, เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบตเบเบชเบญเบ‡เบชเบฒเบกเบขเปˆเบฒเบ‡เบ—เบตเปˆ "เปเบŠเปˆเปเบ‚เบ‡" เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ - เบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เปเบฅเป‰เบงเบงเปˆเบฒเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™ (เบกเบธเป‰เบ‡, เบšเปเปˆเบŠเบตเป‰, เบ™เป‰เปเบฒเบซเบ™เบฑเบ, เบšเปเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบ, เบกเบตเบซเบผเบทเบšเปเปˆเบกเบตเบ‚เบญเบšเปเบฅเบฐ loops เบซเบผเบฒเบ).

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เป„เบ›. เบ•เบปเบงเป€เบฅเบทเบญเบเปƒเบ”เปเบ”เปˆเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบš "เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบŸ" เบžเบงเบเป€เบฎเบปเบฒเบกเบต?

1. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ Matrix

1.1 เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡เบ•เบดเบ”เบเบฑเบ™. matrix เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™เปเบกเปˆเบ™ matrix เบ—เบตเปˆเบซเบปเบงเบ‚เปเป‰เปเบ–เบงเปเบฅเบฐเบ–เบฑเบ™เบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบŸ, เปเบฅเบฐเบ„เปˆเบฒเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบกเบฑเบ™ a(i,j) เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เบกเบตเบซเบผเบทเบšเปเปˆเบกเบตเบ‚เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡. i เปเบฅเบฐ j (เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบดเบ”เบ—เบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง matrix เบˆเบฐเป€เบ›เบฑเบ™ symmetrical, เบซเบผเบทเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบžเบฝเบ‡เปเบ•เปˆเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบ•เบปเป‰เบ™เบ•เป). เบชเปเบฒเบฅเบฑเบšเบเบฃเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เปเป‰เบฒเปœเบฑเบ, a(i,j) เบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เป„เบ”เป‰เบ”เป‰เบงเบเบˆเบณเบ™เบงเบ™เบ‚เบญเบšเบˆเบฒเบ i เบซเบฒ j (เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ‚เบญเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ a(i,j)= 0), เปเบฅเบฐเบชเบณเบฅเบฑเบšเบเบฃเบฒเบŸเบ—เบตเปˆเบกเบตเบ™เป‰เบณเปœเบฑเบ, เบเบฑเบ‡เบ”เป‰เบงเบเบ™เป‰เบณเปœเบฑเบ. (เบ™เป‰เปเบฒเบซเบ™เบฑเบเบฅเบงเบก) เบ‚เบญเบ‡เบ‚เบญเบšเบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒ.

1.2 เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡เบญเบธเบšเบฑเบ”เป€เบซเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆ, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบ•เบปเบงเป€เบฅเบเปเบ–เบงเบเบปเบ‡เบเบฑเบšเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เปเบ™เบงเบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบ•เบปเบงเป€เบฅเบเบ–เบฑเบ™เบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบ‚เบญเบšเบ—เบฒเบ‡เบชเปˆเบงเบ™เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ. เบ–เป‰เบฒเบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เปเบฅเบฐเบ‚เบญเบšเปเบกเปˆเบ™เป€เบซเบ”เบเบฒเบ™เบ•เปเปˆเบเบฑเบ™, เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบนเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เบ•เบฒเบฅเบฒเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ (เบชเปเบฒเบฅเบฑเบšเบเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบดเบ”เบ—เบฒเบ‡, 1 เปเบกเปˆเบ™เบ‚เบฝเบ™เบ–เป‰เบฒเบˆเบธเบ”เปเบฅเบฐเบ‚เบญเบšเปเบกเปˆเบ™เป€เบซเบ”เบเบฒเบ™, เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡ - "1" เบ–เป‰เบฒเบ‚เบญเบš. "เบญเบญเบ" เบˆเบฒเบเบˆเบธเบ”เปเบฅเบฐ "-1" เบ–เป‰เบฒเบกเบฑเบ™ "เบฅเบงเบก" เปƒเบ™เบกเบฑเบ™ (เบกเบฑเบ™เบ‡เปˆเบฒเบเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบˆเบทเปˆ, เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ "เบฅเบปเบš" เบเบฑเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ "เบฅเบงเบก" เปƒเบ™เบˆเปเบฒเบ™เบงเบ™ "-1"). เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบ, เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ 1 เปเบฅเบฐ -1, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ‚เบญเบš.

2. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ™เบฑเบšเบˆเบณ เบ™เบงเบ™

2.1 เบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™. เบ”เบต, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‡เปˆเบฒเบเบ”เบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เปเบ•เปˆเบฅเบฐเบˆเบธเบ”เบ‚เบญเบ‡เบเบฒเบŸเบชเบฒเบกเบฒเบ”, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบ™เบฑเบšเบ—เบธเบ (เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ, vector, array, ...), เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบดเบ”เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเปƒเบซเป‰. เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เป€เบชเบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเบˆเบธเบ”เบ—เบตเปˆเบกเบตเป€เบชเบฑเป‰เบ™ "เบกเบธเป‰เบ‡" เบˆเบฒเบเบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”. เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ.

2.2 เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ ribs. เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ›เบฑเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก. เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ‚เบญเบš, เบ”เบฑเปˆเบ‡เบ—เบตเปˆ Captain Obviousness เบšเบญเบเบžเบงเบเป€เบฎเบปเบฒ, เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ‚เบญเบšเบ‚เบญเบ‡เบเบฒเบŸ, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ” (เบชเปเบฒเบฅเบฑเบšเบเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบดเบ”เบ—เบฒเบ‡, เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”. เปƒเบŠเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ•เปˆเบฒเบ‡เป†, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™) เปเบฅเบฐเบ™เป‰เปเบฒเบซเบ™เบฑเบ (เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบเบฒเบ™ matrix เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก (เปเบฅเบฐเบกเบตเบฎเบนเบšเบ›เบฐเบเบญเบš), เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เบตเปˆเบ™เบตเป‰.

2.3 array เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™. เบšเปเปˆเปเบกเปˆเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบกเบฑเบ™เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ "เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆ" เบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡ (เบญเบฒเป€เบฅ, vector). เบญเบปเบ‡เบ›เบฐเบเบญเบš n เบ—เปเบฒเบญเบดเบ” (เบ•เบฒเบกเบˆเปเบฒเบ™เบงเบ™เบˆเบธเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบฃเบฒเบŸ) เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบญเบฒเป€เบฃเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบญเบฒเป€เบฃเบ”เบฝเบงเบเบฑเบ™, เป€เบŠเบดเปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบˆเบธเบ”เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™เบเบฑเบšเบญเบฑเบ™เบ—เบตเปˆเปƒเบซเป‰เป„เบงเป‰เบ™เบฑเป‰เบ™เบ–เบทเบเบ‚เบฝเบ™เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™.

เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบญเบเบžเบปเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” (เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบเป€เบญเบ‡): ejuo.livejournal.com/4518.html

3. Adjacency Vector เปเบฅเบฐ Associative Adjacency Array

เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบชเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบšเปเปˆเปเบกเปˆเบ™เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบกเบทเบญเบฒเบŠเบตเบš, เปเบ•เปˆเบœเบนเป‰เบ—เบตเปˆเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบŸเป€เบ›เบฑเบ™เป„เบฅเบเบฐ, เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ‚เบญเบš. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบฑเบ™เบชเบฐเบ”เบงเบเบ–เป‰เบฒเบเบฒเบŸเบกเบต loops เบซเบผเบฒเบเปเบฅเบฐเบ‚เบญเบš. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบฅเบฒเบชเบชเบดเบเบ‚เบญเบ‡เปเบ„เบก, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบš "เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ / เบชเบฒเบ‚เบฒ / เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ / เบเบฒเบ™เบเบฒเบเบžเบฑเบ™", เบ„เบท: vector adjacency เปเบฅเบฐ array adjacency เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡.

3.1 vector เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™

เบเปเบฅเบฐเบ™เบต (a1): เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เปเป‰เบฒเปœเบฑเบ

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป‚เบ—เบซเบฒ vector เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบ›เบฑเบ™เบŠเบธเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ„เบนเปˆ (a[2i], a[2i+1], ..., เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบ c 0), เป€เบŠเบดเปˆเบ‡เปเบ•เปˆเบฅเบฐเบ„เบนเปˆเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ. เปเบกเปˆเบ™ a[2i], a[2i+1] เบฅเบฐเบšเบธเบ‚เบญเบšเบเบฃเบฒเบŸเบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡ a[2i] เปเบฅเบฐ a[2i+1], เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš.
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบ™เบตเป‰โ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบงเปˆเบฒโ€‹เบโ€‹เบฃเบฒโ€‹เบŸโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ” (เบ—เบฑเบ‡โ€‹เบชเบญเบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹)โ€‹. เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบฎเบนเบšเปเบšเบš digraph, เบ‚เบญเบšเบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบˆเบฒเบ a[2i] เบซเบฒ a[2i+1]. เบ—เบตเปˆเบ™เบตเป‰เปเบฅเบฐเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰: เบชเปเบฒเบฅเบฑเบšเบเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบดเบ”เบ—เบฒเบ‡, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ vertices เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบงเปˆเบฒ vertex เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบ•เปˆเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบกเบฑเบ™เบกเบฒเบเปˆเบญเบ™).

เปƒเบ™ C ++, เบ„เบงเบ™เบฅเบฐเบšเบธ vector adjacency เป‚เบ”เบเปƒเบŠเป‰ std::vector, เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™เบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰.

Case (a2): เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เป‰เบณเปœเบฑเบ, เบ™เป‰เบณเปœเบฑเบเบ‚เบญเบšเปเบกเปˆเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก

เป‚เบ”เบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเปเบฅเบฐเบ™เบต (a1), เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒ vector เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบตเปˆเบกเบตเบ‚เบญเบšเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบ›เบฑเบ™เบŠเบธเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ (เบญเบฒเป€เบฃเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง) เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ (a[3i], a[3i+1], a[3i+2], ..., เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบ–เบทเบเป€เบฅเบ c 0), เบšเปˆเบญเบ™เบ—เบตเปˆเปเบ•เปˆเบฅเบฐ "triplet" เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ a[3i], a[3i+1], a[3i+2] เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเบ‚เบญเบ‡เบเบฃเบฒเบŸเบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡เป€เบฅเบ a[3i] เปเบฅเบฐ a[3i+1], เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เปเบฅเบฐเบ„เปˆเบฒ a [3i+2] เปเบกเปˆเบ™เบ™เปเป‰เบฒเปœเบฑเบเบ‚เบญเบ‡เบ‚เบญเบšเบ™เบตเป‰. เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ—เบดเบ”เบ—เบฒเบ‡เบซเบผเบทเบšเปเปˆ.

Case (b): เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เป‰เบณเปœเบฑเบ, เบ™เป‰เบณเปœเบฑเบเบ‚เบญเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบš heterogeneous เปƒเบ™เบซเบ™เบถเปˆเบ‡ array (vector), เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบเบฃเบฒเบŸเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ„เบนเปˆเบ‚เบญเบ‡ vectors, เป€เบŠเบดเปˆเบ‡ vector เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™ vector เบ‚เบญเบ‡ adjacency เบ‚เบญเบ‡เบเบฒเบŸเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ™เป‰เปเบฒเบซเบ™เบฑเบ, เปเบฅเบฐ vector เบ—เบตเบชเบญเบ‡เบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ (เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš C ++: std::pair. ). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบ‚เบญเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ„เบนเปˆเบ‚เบญเบ‡เปเบ™เบงเบ•เบฑเป‰เบ‡เบžเบฒเบเปƒเบ•เป‰เบ”เบฑเบ”เบŠเบฐเบ™เบต 2i, 2i + 1 เบ‚เบญเบ‡ vector เบ—เปเบฒเบญเบดเบ”, เบ™เป‰เปเบฒเบซเบ™เบฑเบเบˆเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบžเบฒเบเปƒเบ•เป‰เบ”เบฑเบ”เบŠเบฐเบ™เบต i เบ‚เบญเบ‡ vector เบ—เบตเบชเบญเบ‡.

เปเบฅเป‰เบง, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบญเบฑเบ™เบ™เบตเป‰เบˆเบถเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™?

เบ”เบต, เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบชเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบžเบปเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡. เบ”เบต, เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบˆเบฐเบกเบตเบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • vector เบ—เบตเปˆเบขเบนเปˆเบ•เบดเบ”เบเบฑเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ "enumerative" เบญเบทเปˆเบ™เป†, เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบ™เบฒเปเบซเบ™เป‰เบ™, เปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ matrix adjacency (เบชเปเบฒเบฅเบฑเบšเบเบฒเบŸ sparse), เปเบฅเบฐเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”.
  • เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบˆเบธเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบŸเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบซเบกเบฒเบเบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบเบฅเบปเบš. เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒ "เบเบฒเบ™เบšเบดเบ”เป€เบšเบทเบญเบ™" เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™?
  • เบเบฃเบฒเบšเบชเบฒเบกเบฒเบ”เบ›เบฐเบเบญเบšเบกเบตเบซเบผเบฒเบเบ‚เบญเบšเปเบฅเบฐเบซเบผเบฒเบ loops, เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบšเบงเบ, เบฅเบปเบš, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบนเบ™). เบšเปเปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.
  • เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบเบฑเบšเบ‚เบญเบš - เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒ, เป€เบšเบดเปˆเบ‡เบžเบฒเบ 4.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบงเปˆเบฒ "เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ" เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบง. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰ Associative Adjacency Array เบกเบฒเบฎเบญเบ”เบเบนเป‰เป„เบž, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

3.2 Associative adjacency array

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบญเบšเบชเบฐเป€เบžเบฒเบฐ, เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ matrix adjacency, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™ vector adjacency เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบธเบ™เปเบˆเปเบกเปˆเบ™เบ‚เบญเบšเบ‚เบญเบ‡เบเบฒเบŸ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเป„เบ”เป‰เป€เบ›เบฑเบ™เบ„เบนเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก. เบญเบฑเบ™เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเปเบ™เบงเปƒเบ”? เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบเบฐเปเบˆเปƒเบ™ array เบชเบฐเบกเบฒเบ„เบปเบกเบšเป? เปเบฅเบฐ, เบ–เป‰เบฒเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™? เบ‚เปเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบญเบฒเป€เบฃเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบ„เบต - เบ„เบนเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก - เบˆเบฐเบ–เบทเบเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบ„เปˆเบฒ - เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบซเบผเบทเบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบ‚เบญเบš. เปƒเบ™ C ++, เบ„เบงเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบตเป‰เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ std::map container (std::map. , int> เบซเบผเบท std::เปเบœเบ™เบ—เบตเปˆ , double>), เบซเบผเบท std::multimap เบ–เป‰เบฒเบ„เบฒเบ”เบซเบผเบฒเบเบ‚เบญเบš. เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบŸเบ—เบตเปˆเป€เบญเบปเบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบเปˆเบงเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ "matrix", เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบกเบต loops เปเบฅเบฐเบ‚เบญเบšเบซเบผเบฒเบ, เปเบฅเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบฅเบปเบšเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ vertex (เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบฎเบนเป‰. เบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบตเป‰, เปเบ•เปˆเบเบฑเบ‡).

4. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เป€เบ•เบฑเบก, เปเบ•เปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบซเบฒเบเป„เบ›

เปเบฅเบฐเบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡: เป€เบกเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบซเป‰เบเบฑเบšเบ‚เบญเบšเบ‚เบญเบ‡เบเบฒเบŸเปเบฅเบฐ, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบžเบงเบเบกเบฑเบ™. เบ–เป‰เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเปˆเบฒเบ‡เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒ "เบเบฒเบŸเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก" เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡ vector adjacency เปเบฅเบฐ associative adjacency array.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบŸเบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบ, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ‚เบญเบšเบ—เบตเปˆเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, 2 เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ” vector เบ—เบตเปˆเบขเบนเปˆเปƒเบเป‰เบ„เบฝเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบ›เบฑเบ™เบŠเบธเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเปเบกเปˆเบ™ "เบ„เบนเปˆ", เปเบ•เปˆ "quartets" เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก (a[2i], a[2i+1], a[2i+2], a [2i+3]โ€ฆ) , เบšเปˆเบญเบ™เบ—เบตเปˆ a[2i+2] เปเบฅเบฐ a[2i+3] เบˆเบฐเบเบณเบ™เบปเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ‚เบญเบšเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ‚เบญเบ‡เบ‚เบญเบš, เบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ (เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบžเบฝเบ‡เปเบ•เปˆเบงเปˆเบฒเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบ‚เบญเบšเปเบฅเบฐเบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบญเบปเบ‡เบ›เบฐเบเบญเบš a[2i+3] เปเบฅเบฐ a[2i+4] , เปเบฅเบฐเปเบ‚เบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเบšเปเปˆเปเบกเปˆเบ™ 4, เปเบ•เปˆ 5 เบ•เบปเบงเป€เบฅเบเบ„เปเบฒเบชเบฑเปˆเบ‡). เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก, เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบฝเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบšเปเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบกเบฑเบ™.

เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰ array adjacency เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบŸเบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบšเบˆเปเบฒเบ™เบงเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เบ„เปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเบ”เบฝเบง, เปเบ•เปˆ array (vector) เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบฅเบฐเบšเบธ, เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบ‚เบญเบš, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบทเปˆเบ™เป†. เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเปเบกเปˆเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰ (เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบ, เปเบ•เปˆเบ–เป‰เบฒเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบผเบฒเบ, เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”. 'เบšเปเปˆเบ•เบฑเป‰เบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบเบตเบ™เป„เบ› " tricky " double, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡). เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปƒเบ™ C ++ เบ‚เบฐเบซเบเบฒเบ associative adjacency arrays เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: std::map , std::vector> เบซเบผเบท std::map , std::vector, เป€เบŠเบดเปˆเบ‡เบ„เปˆเบฒเบ—เปเบฒเบญเบดเบ”เปƒเบ™ "key-value-vector" เบˆเบฐเป€เบ›เบฑเบ™เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡เบ‚เบญเบš, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบกเบฑเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆ.

เบงเบฑเบ™เบ™เบฐเบ„เบฐเบ”เบต:

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบŸ เปเบฅเบฐ เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›:

1. Cormen, Thomas H., Leiserson, Charles I., Rivest, Ronald L., Stein, Clifford. เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ: เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบชเบฐเบšเบฑเบšเบ—เบต 2: Trans. เบˆเบฒเบเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ” โ€“ M.: Williams Publishing House, 2011.
2. เบฎเบฒเบฃเบต เปเบŸเบฃเบ‡. เบ—เบดเบ”เบชเบฐเบ”เบตเบเบฒเบŸ. M.: Mir, 1973.
เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบš vector เปเบฅเบฐ array เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ‚เบญเบ‡ adjacencies:
3. Chernoukhov S.A. adjacency vector เปเบฅเบฐ associative adjacency array เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบŸ / SA Chernouhov. เปเบœเบ™เบ—เบตเปˆ vector เปเบฅเบฐ adjacency เป€เบ›เบฑเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบเบฒเบŸ // เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบšเบปเบ”เบ„เบงเบฒเบกเบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฒเบเบปเบ™ "เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบกเบฑเบ™" (Saratov, 14.09.2019 เบเบฑเบ™เบเบฒ 2019). โ€“ เบชเบฐเป€เบ•เบตเบฅเบดเบ—เบฒเบกเบฒเบ: AMI, 65, เปœเป‰เบฒ. 69-XNUMX
เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเบญเบ™เป„เบฅเบ™เปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰:
4. prog-cpp.ru/data-graph
5. ejuo.livejournal.com/4518.html

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™