±×·¡ÇÁÀÇ Á¤ÀÇ

°¢°¢ÀÇ ´ÜÀ§ Á¤º¸¸¦ ¸µÅ©·Î ¿¬°áÇÏ¿© ±¸Á¶È­½ÃŲ ÀÚ·á ±¸Á¶¸¦ ±×·¡ÇÁ¶ó ÇÑ´Ù.


ÀÌ ±×¸²Àº °¢ µµ½Ã¸¦ Ç¥ÇöÇÏ´Â ´ÜÀ§ ³ëµåµéÀ» ¸µÅ©·Î ¿¬°áÇÑ °ÍÀÌ´Ù. ¸µÅ©´Â µÎ°³ÀÇ ³ëµå¸¦ ¿¬°áÇÏ¿© ¸µÅ©ÀÇ ¾ç³¡ ³ëµå°¡ ¼­·Î ƯÁ¤ÇÑ °ü°è¸¦ °¡Áö°í ÀÖÀ½À» ³ªÅ¸³½´Ù. ¿©±â¼­ÀÇ ¸µÅ©´Â µÎ µµ½Ã¸¦ ¿¬°áÇÏ´Â µµ·Î°¡ ÀÖÀ½À» Ç¥ÇöÇØÁØ´Ù.
±×·¡ÇÁ¿¡¼­ ³ëµå´Â "vertex", ¸µÅ©´Â "edge"¶ó ÇÑ´Ù.
ÇϳªÀÇ ±×·¡ÇÁ´Â ´ÙÀ½°ú °°ÀÌ vertex¿Í edgeÀÇ ÁýÇÕÀ¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
G=(V,E) , V= vertexÁýÇÕ , E= edgeÁýÇÕ


¿ë¾î ¼³¸í

  1. ¹«Çâ ±×·¡ÇÁ (undirected graph)
  2. À¯Çâ ±×·¡ÇÁ (directed graph)
  3. ¿ÏÀü ±×·¡ÇÁ (complete graph)
  4. ÀÎÁ¢¼º (Adjacency)
  5. °æ·Î (path)¿Í ¼øÈ¯ (cycle)
  6. ¿¬°á¼º (connectivity)


edge¿¡ ¹æÇ⼺ÀÌ ¾ø¾î¼­ ¿¬°áµÈ vertexµéÀÇ ¼ø¼­°¡ Á¤ÇØÁöÁö ¾ÊÀº ±×·¡ÇÁ¸¦ ¸»ÇÑ´Ù.
¹«Çâ ±×·¡ÇÁÀÇ edge´Â vertex½ÖÀ» °ýÈ£·Î ¹­¾î Ç¥ÇöÇÑ´Ù.
(¿¹) E={(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)}
¹«Çâ ±×·¡ÇÁ´Â ½Ç¼±À¸·Î edge¸¦ Ç¥ÇöÇÑ´Ù.


<¹«Çâ ±×·¡ÇÁÀÇ ¿¹>

À¯Çâ ±×·¡ÇÁ(directed graph)

edge¿¡ ¹æÇ⼺ÀÌ À־ ¿¬°áµÈ vertexµéÀÇ ¼ø¼­°¡ Á¤ÇØÁø ±×·¡ÇÁ¸¦ ¸»ÇÑ´Ù.
À¯Çâ ±×·¡ÇÁÀÇ edge´Â vertex½ÖÀ» °¢°ýÈ£·Î ¹­¾î Ç¥ÇöÇÑ´Ù.
(¿¹) E={(A, B), (B, D), (D, C), (C, A)}
À¯Çâ ±×·¡ÇÁ´Â È­»ìÇ¥·Î edgeÀÇ ¹æÇâÀ» Ç¥½ÃÇÑ´Ù.


<À¯Çâ ±×·¡ÇÁÀÇ ¿¹>

¿ÏÀü ±×·¡ÇÁ(complete graph)

¸ðµç vertex½ÖÀ» ¿¬°áÇÏ´Â edge°¡ Á¸ÀçÇÏ´Â ±×·¡ÇÁ¸¦ ¸»ÇÑ´Ù.
¿ÏÀü ±×·¡ÇÁ´Â °°Àº ¼öÀÇ vertex¸¦ °¡Áö´Â ±×·¡ÇÁµé Áß¿¡¼­ °¡Àå ¸¹Àº edge¸¦ °¡Áø´Ù.
¿ÏÀü ±×·¡ÇÁÀÇ edge¼ö = n(n-1) /2 , n = vertex¼ö


<¿ÏÀü ±×·¡ÇÁÀÇ ¿¹>

ÀÎÁ¢¼º(adjacency)

¹«Çâ ±×·¡ÇÁÀÇ ÀÎÁ¢¼º
µÎ°³ÀÇ vertex°¡ edge·Î ¿¬°áµÇ¾î ÀÖÀ¸¸é "ÀÎÁ¢ÇØ ÀÖ´Ù"¶ó°í ÇÑ´Ù.

À¯Çâ ±×·¡ÇÁÀÇ ÀÎÁ¢¼º
µÎ°³ÀÇ vertex°¡ edge·Î ¿¬°áµÇ¾î ÀÖÀ»¶§,edgeÀÇ ¹æÇâ¿¡ µû¶ó "~·Î ÀÎÁ¢ÇØÀÖ´Ù", "~·ÎºÎÅÍ ÀÎÁ¢ÇØ ÀÖ´Ù"¶ó°í ÇÑ´Ù.


A´Â B·Î ÀÎÁ¢ÇØ ÀÖ´Ù.
B´Â A·ÎºÎÅÍ ÀÎÁ¢ÇØ ÀÖ´Ù.

°æ·Î(path)¿Í ¼øÈ¯(cycle)

±×·¡ÇÁ ³»¿¡¼­ ƯÁ¤ vertex Vi·ÎºÎÅÍ Vj±îÁö edgeÀÇ sequence¸¦ °æ·Î¶ó ÇÑ´Ù.
¹«Çâ ±×·¡ÇÁÀÇ °æ·Î(¹«Çâ °æ·Î): A-F-E-G-D

À¯Çâ ±×·¡ÇÁÀÇ °æ·Î(À¯Çâ °æ·Î): A-B-E-F-G-D

°æ·ÎÀÇ ±æÀÌ = °æ·Î ³»ÀÇ ÃÑ edge¼ö
´Ü¼ø °æ·Î : ±×·¡ÇÁ ³»ÀÇ ¸ðµç vertex¸¦ Áö³ª´Â °æ·Î: A-B-E-F-G-D-C

¼øÈ¯(cycle) : ½ÃÀÛÁ¡°ú ³¡Á¡ÀÌ ¿¬°áµÈ °æ·Î: A-F-G-D-C-B

¿¬°á¼º(connectivity)

¹«Çâ ±×·¡ÇÁ¿¡¼­ ¸ðµç vertex½Ö¿¡ ´ëÇØ °æ·Î°¡ Á¸ÀçÇÏ¸é ±× ±×·¡ÇÁ´Â "¿¬°áµÇ¾ú´Ù"¶ó°í ÇÑ´Ù.
¼­ºê±×·¡ÇÁ(subgraph)
±×·¡ÇÁ G¿Í G'ÀÌ ÀÖÀ»¶§ G'ÀÇ ¸ðµç vertex°¡ GÀÇ vertexÁýÇÕ¿¡ Æ÷ÇԵǰí G'ÀÇ ¸ðµç edge°¡ GÀÇ edgeÁýÇÕ¿¡ Æ÷ÇԵǸé G'À» GÀÇ ¼­ºê±×·¡ÇÁ¶ó ÇÑ´Ù.

¿¬°á ¼ººÐ(connected component)
ÇÑ ±×·¡ÇÁ³»¿¡¼­ ÃÖ´ë·Î ¿¬°áµÇ¾î ÀÖ´Â ¼­ºê ±×·¡ÇÁ¸¦ ¿¬°á ¼ººÐÀ̶ó ÇÑ´Ù.

À§ ±×¸²ÀÇ ±×·¡ÇÁ´Â ¿¬°áµÇÁö ¾ÊÀº ±×·¡ÇÁ·Î¼­ 2°³ÀÇ ¿¬°á¼ººÐ H1°ú H2¸¦ °¡Áø´Ù.

Â÷¼ö(degree)
¹«Çâ±×·¡ÇÁ¿¡¼­ÀÇ Â÷¼ö
ÇÑ vertex¿¡ ¿¬°áµÈ edgeÀÇ ¼ö
À¯Çâ±×·¡ÇÁ¿¡¼­ÀÇ Â÷¼ö
ÀÎÀÔÄ¡¼ö(in-degree) : ÇÑ vertex·Î µé¾î¿À´Â edgeÀÇ ¼ö
ÀÎÃâÄ¡¼ö(out-degree) : ÇÑ vertex·ÎºÎÅÍ ³ª°¡´Â edgeÀÇ ¼ö


±×·¡ÇÁÀÇ Ç¥Çö ¹æ¹ý

ÀÎÁ¢ Çà·Ä(adjacency matrix)

°¢ vertexµé°£ÀÇ ¿¬°áÀ» Çà·Ä·Î Ç¥ÇöÇÑ °ÍÀÌ´Ù. ÀÎÁ¢ Çà·Ä MÀº n x n Á¤¹æÇà·Ä·Î¼­ nÀº ±×·¡ÇÁ³»ÀÇ vertex¼öÀÌ´Ù. Çà·ÄÀÇ (i,j)¿ø¼Ò Aij°¡ 1À̸é vertex Vi¿Í Vj°¡ ÀÎÁ¢ÇØ ÀÖ´Â °ÍÀ̰í, Aij°¡ 0À̸é Vi¿Í Vj´Â ÀÎÁ¢ÇÏÁö ¾ÊÀº °ÍÀÌ´Ù.

ÀÎÁ¢ Çà·ÄÀÇ ¹®Á¦Á¡
ÀÎÁ¢ Çà·Ä·Î´Â n(n-1)°³ÀÇ edge¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ½ÇÁ¦·Î ±×·¡ÇÁ³»ÀÇ edge¼ö´Â À̺¸´Ù ÈξÀ Àû±â ¶§¹®¿¡ ´ëºÎºÐÀÇ Çà·Ä¿ø¼Ò´Â 0ÀÇ °ªÀ» °¡Áø´Ù. µû¶ó¼­ ¿ÏÀü ±×·¡ÇÁó·³ edge°¡ ¸¹Àº °æ¿ì¸¦ Á¦¿ÜÇϰí´Â »ó´ç·®ÀÇ ±â¾ïÀå¼Ò°¡ ³¶ºñµÇ´Â ¹®Á¦°¡ ÀÖ´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ÀÎÁ¢ ¸®½ºÆ®¸¦ »ç¿ëÇÑ´Ù.

ÀÎÁ¢ ¸®½ºÆ®(adjacency list)

°¢°¢ÀÇ vertex¿¡ ´ëÇØ ÀÎÁ¢ÇÑ vertexµéÀ» ¿¬°á ¸®½ºÆ®·Î Ç¥ÇöÇÑ °ÍÀÌ ÀÎÁ¢ ¸®½ºÆ®ÀÌ´Ù. ÀÎÁ¢ ¸®½ºÆ®¿¡´Â n°³ÀÇ ¿¬°á ¸®½ºÆ®°¡ Á¸ÀçÇÏ´Â µ¥ ¿©±â¼­ nÀº ±×·¡ÇÁ³»ÀÇ vertex¼öÀÌ´Ù. ¾î¶² ¸®½ºÆ®³»¿¡ vertexÀÇ ³ëµå°¡ µé¾îÀÖÀ¸¸é ±× vertexµéÀº ¿¬°áµÈ °ÍÀ̰í, µé¾îÀÖÁö ¾ÊÀ¸¸é ¿¬°áµÇÁö ¾ÊÀº °ÍÀÌ´Ù.

ÀÎÁ¢ ¸®½ºÆ®ÀÇ ÀåÁ¡
ÀÎÁ¢ ¸®½ºÆ®´Â ¿¬°áµÈ vertexµé¸¸ ¸®½ºÆ®·Î °ü¸®Çϱ⠶§¹®¿¡ ÀÎÁ¢ Çà·ÄÀ» »ç¿ëÇÏ´Â °æ¿ìó·³ ºñ¿¬°á vertex¸¦ Ç¥ÇöÇϱâ À§ÇØ ±â¾ïÀå¼Ò¸¦ ³¶ºñÇÏÁö ¾Ê´Â´Ù.
ÀÎÁ¢ ¸®½ºÆ®ÀÇ ´ÜÁ¡
ÀÎÁ¢ ¸®½ºÆ®´Â ÇϳªÀÇ ¿¬°áÀ» Ç¥½ÃÇϱâ À§ÇØ vertexi Á¤º¸»Ó ¾Æ´Ï¶ó ¸µÅ© Á¤º¸±îÁö »ç¿ëµÇ¹Ç·Î edgeÀÇ ¼ö°¡ »ó´ëÀûÀ¸·Î ¸¹Àº °æ¿ì ÀÎÁ¢Çà·ÄÀ» »ç¿ëÇÒ ¶§º¸´Ù ±â¾ïÀå¼Ò ³¶ºñ°¡ ½ÉÇØÁú ¼öÀÖ´Ù.


±×·¡ÇÁ Ž»ö

±íÀÌ ¿ì¼± Ž»ö (depth first search:DFS)

  1. ƯÁ¤ vertex¸¦ ½ÃÁ¡À¸·Î ¼±ÅÃÇÑ´Ù.
  2. ¼±ÅÃµÈ vertex¿¡ "¹æ¹®"Ç¥½Ã¸¦ ÇÑ´Ù.
  3. ¼±ÅÃµÈ vertex¿¡ ¿¬°áµÈ ¿©·¯ vertexµéÀ» °Ë»çÇÑ´Ù.
  4. °Ë»çÇÑ vertexµé Áß¿¡ ¾ÆÁ÷ ¹æ¹®ÇÏÁö ¾ÊÀº vertex°¡ ÀÖÀ¸¸é ±× vertex¸¦ »õ·Ó°Ô ¼±ÅÃÇÏ°í ¿ø·¡ vertex´Â ½ºÅÿ¡ ³Ö´Â´Ù.
  5. °Ë»çÇÑ vertexµé Áß¿¡ ¹æ¹®ÇÏÁö ¾ÊÀº vertex°¡ Çϳªµµ ¾øÀ¸¸é ÃÖÁ¾ÀûÀ¸·Î »ðÀÔµÈ vertex¸¦ ²¨³»¼­ »õ·Ó°Ô ¼±ÅÃÇÑ´Ù.
  6. stackÀÌ ºô ¶§±îÁö 2-5ÀÇ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.

1-6ÀÇ °úÁ¤ÀÌ ³¡³ª¸é ¸ðµç vertexµéÀ» Çѹø¾¿ ¹æ¹®ÇÏ°Ô µÈ´Ù.

³Êºñ ¿ì¼± Ž»ö (breadth first search)

  1. ƯÁ¤ vertex¸¦ ½ÃÀÛÁ¡À¸·Î ¼±ÅÃÇÑ´Ù.
  2. ¼±ÅÃµÈ vertex¿¡ "¹æ¹®" Ç¥½Ã¸¦ ÇÑ´Ù.
  3. ¼±ÅÃµÈ vertex¿¡ ¿¬°áµÈ ¿©·¯ vertexµéÀ» °Ë»çÇÏ¿© ¹Ì¹æ¹® vertexµéÀ» Å¥¿¡ ³Ö´Â´Ù.
  4. Å¥ÀÇ front¿¡¼­ ÇϳªÀÇ vertex¸¦ ²¨³»¾î »õ·Ó°Ô ¼±ÅÃÇÑ´Ù.
  5. Å¥°¡ ºô ¶§±îÁö 2-4ÀÇ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.

1-5ÀÇ °úÁ¤À» ³¡³»¸é ¸ðµç vertexµéÀ» Çѹø¾¿ ¹æ¹®ÇÏ°Ô µÈ´Ù.


ÃÖ¼Òºñ¿ë ½ºÆÐ´× Æ®¸® (minimum cost spanning tree)

½ºÆÐ´× Æ®¸®ÀÇ Á¤ÀÇ
ÃÖ¼Òºñ¿ë ½ºÆÐ´× Æ®¸®ÀÇ ¼ºÁú
ÃÖ¼Òºñ¿ë ½ºÆÐ´× Æ®¸®ÀÇ ±¸¼º¹æ¹ý
KruskalÀÇ ¹æ¹ý
PrimÀÇ ¹æ¹ý
sollinÀÇ ¹æ¹ý


½ºÆÐ´× Æ®¸®ÀÇ Á¤ÀÇ

ƯÁ¤ ±×·¡ÇÁ GÀÇ ¼­ºê±×·¡ÇÁ Áß¿¡¼­ GÀÇ ¸ðµç vertex¸¦ ¿¬°áÇÏ´Â Æ®¸®¸¦ ½ºÆÐ´× Æ®¸®¶ó ÇÑ´Ù.

±íÀÌ ¿ì¼± Ž»öÀÇ °á°ú·Î ½ºÆÐ´× Æ®¸®°¡ ¸¸µé¾îÁö´Âµ¥ À̰ÍÀ» ±íÀÌ ¿ì¼± ½ºÆÐ´× Æ®¸®(depth first spannig tree)¶ó ÇÑ´Ù. ³Êºñ ¿ì¼± Ž»öÀÇ °á°ú·Î ½ºÆÐ´× Æ®¸®°¡ ¸¸µé¾îÁö´Âµ¥ À̰ÍÀ» ³Êºñ ¿ì¼± ½ºÆÐ´× Æ®¸®(breadth first spanning tree)¶ó ÇÑ´Ù.

½ºÆÐ´× Æ®¸®ÀÇ ¼ºÁú

½ºÆÐ´× Æ®¸®´Â ±×·¡ÇÁÀÇ ¸ðµç vertex´Â Æ÷ÇÔÇϸ鼭 ¿¬°áµÇ¾î ÀÖ´Â ÃÖ¼Ò ¼­ºê ±×·¡ÇÁ(minimal subgraph)ÀÌ´Ù.

ÃÖ¼Òºñ¿ë ½ºÆÐ´× Æ®¸®ÀÇ ¼ºÁú

½ºÆÐ´× Æ®¸®ÀÇ °¢ edge¿¡ °¡ÁßÄ¡¸¦ ºÎ¿©ÇßÀ»¶§ °¡ÁßÄ¡ÀÇ ÃÑÇÕÀÇ °¡Àå ÀûÀº ½ºÆÐ´× Æ®¸®¸¦ ÃÖ¼Ò ºñ¿ë ½ºÆÐ´× Æ®¸®¶ó ÇÑ´Ù. ÃÖ¼Òºñ¿ë ½ºÆÐ´× Æ®¸®´Â ´ÙÀ½°ú °°Àº ¼ºÁúÀ» °¡Áø´Ù.

  1. ±×·¡ÇÁ ³»¿¡ ¿ø·¡ ÀÖ´ø edgeµé¸¸À» Æ÷ÇÔÇÑ´Ù.
  2. vertexÀÇ ¼ö°¡ nÀ϶§ n-1°³ÀÇ edge¸¸À» Æ÷ÇÔÇÑ´Ù.
  3. ¼øÈ¯ (cycle)ÀÌ À־´Â ¾ÈµÈ´Ù.

ÃÖ¼Ò ºñ¿ë ½ºÆÐ´× Æ®¸® ±¸¼º¹æ¹ý

kruskalÀÇ ¹æ¹ý
primÀÇ ¹æ¹ý
sollinÀÇ ¹æ¹ý

kruskalÀÇ ¹æ¹ý

  1. ÇöÀç edgeµéÀÇ list¿¡¼­ °¡ÁßÄ¡°¡ °¡Àå ÀûÀº edge¸¦ ¼±ÅÃÇÑ´Ù.
  2. ¼±ÅÃµÈ edge·Î µÎ vertex¸¦ ¿¬°áÇßÀ»¶§ ¼øÈ¯(cycle)ÀÌ »ý±â¸é edge¸¦ ¹ö¸®°í ±×·¸Áö ¾ÊÀ¸¸é ½ºÆÐ´× Æ®¸®¿¡ »ðÀÔÇÑ´Ù.
  3. ¼±ÅÃµÈ edge´Â edge list¿¡¼­ Á¦°ÅÇÑ´Ù.
  4. edge list¿¡ ´õÀÌ»óÀÇ edge°¡ ³²¾Æ ÀÖÁö ¾ÊÀ»¶§±îÁö 1-3À» ¹Ýº¹ÇÑ´Ù.

primÀÇ ¹æ¹ý

  1. ÇöÀç edgeµéÀÇ list¿¡¼­ °¡ÁßÄ¡°¡ °¡Àå ÀûÀº edge¸¦ ¼±ÅÃÇÑ´Ù.
  2. ¼±ÅÃµÈ edge·Î µÎ vertex¸¦ ¿¬°áÇßÀ»¶§ ¼øÈ¯(cycle)ÀÌ »ý±â¸é edge¸¦ ¹ö¸®°í ±×·¸Áö ¾ÊÀ¸¸é ½ºÆÐ´× Æ®¸®¿¡ »ðÀÔÇÑ´Ù.
  3. ±âÁ¸ÀÇ spanningÆ®¸®¸¦ ÀÌ·ç´Â edgeÀÇ ÇÑ ³¡ vertex¿¡ ¿¬°áµÈ edgeµéÀ» °Ë»çÇÑ´Ù.
  4. °Ë»çÇÑ edgeµé Áß¿¡¼­ ¾ÆÁ÷ tree¿¡ µé¾îÀÖÁö ¾ÊÀ¸¸é¼­ °¡ÁßÄ¡°¡ °¡Àå ÀûÀº edge¸¦ ¼±ÅÃÇÑ´Ù.
  5. ¼±ÅÃµÈ edge´Â edge list¿¡¼­ Á¦°ÅÇÑ´Ù.
  6. edge list¿¡ ´õÀÌ»óÀÇ edge°¡ ³²Áö ¾ÊÀ» ¶§±îÁö 2-5¸¦ ¹Ýº¹ÇÑ´Ù.

sollinÀÇ ¹æ¹ý

  1. °¢ vertex¿¡ ¿¬°áµÈ edgeµé Áß¿¡ ÃÖ¼Ò °¡ÁßÄ¡¸¦ °¡Áö´Â edgeµéÀ» ¼±ÅÃÇÑ´Ù.
  2. ¼±ÅÃµÈ edgeµé Áß Áߺ¹µÈ edgeµéÀ» Á¦°ÅÇÑ´Ù.
  3. ³ª¸ÓÁö edgeµé Áß¿¡¼­ ÃÖ¼Ò °¡ÁßÄ¡ edge¸¦ ¼±ÅÃÇÑ´Ù.
  4. ¼±ÅÃÇÑ edge°¡ cycleÀ» ÀÌ·ç¸é ±× edge¸¦ ¹ö¸°´Ù.
  5. ¼±ÅÃÇÑ edge°¡ cycleÀ» ÀÌ·çÁö ¾ÊÀ¸¸é Æ®¸®¿¡ »ðÀÔÇÑ´Ù.