Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Матричне уявлення графів

Реферат Матричне уявлення графів





е перестали відзначатися.


Ч0a2«a3»a4«Чb1»b2«b3»00c2«c3»c4«Чd1»00d4'

Тепер проводимо лінії через всі відмічені стовпці і невідмічені рядка.


Ч0a2«a3»a4«Чb1»b2«b3»00c2«c3»c4«Чd1»00d4'

Всі ці дії переслідували лише одну мету: провести найменшу кількість ліній (вертикалей і горизонталей), щоб покрити всі червоні нулі. Можна було скористатися будь-яким іншим методом замість описаного.

Крок 4

З непокритих лініями елементів матриці (в даному випадку це a2 «, a3», a4 «, c2», c3 «, c4») знайти найменший. Відняти його з усіх не зазначених рядків і додати до всіх перетинів зазначених рядків і стовпців. Так, наприклад, якщо найменший елемент з перерахованих дорівнює а2 ', ми отримаємо


Ч00a3«-а2»a4«-a2»Чb1«+a2»b2«b3»00c2«-а2»c3«-а2»c4«-а2»Чd1«+a2»00d4'

Повторювати процедуру (кроки 1-4) до тих пір, поки призначення не стане можливим.

Реалізація на python.

У лістингу 3 наводиться приклад реалізації рішення прикладу, описаного вище, на мові програмування python.

Лістинг 3.

improveLabels (val):

«» »change the labels, and maintain minSlack.

«» »u in S: [u] -=valv in V: v in T: [v] +=val: [v] [0] -=val

improveMatching (v):

«» »apply the alternating path from v to the root in the tree.

«» »= T [v] u in Mu: (Mu [u]) [u]=v [v]=u

slack (u, v): return lu [u] + lv [v] - w [u] [v]

augment ():

«» »augment the matching, possibly improving the lablels on the way.

«» »True:

# select edge (u, v) with u in S, v not in T and min slack

((val, u), v)=min ([(minSlack [v], v) for v in V if v not in T]) u in Sval> 0: (val)

# now we are sure that (u, v) is saturatedslack (u, v) == 0 [v]=u # add (u, v) to the treev in Mv:=Mv [ v] # matched edge, not u1 in S [u1]=True # ... add endpoint to treev in V: # maintain minSlacknot v in T and minSlack [v] [0]> slack (u1, v): [v]=[slack (u1, v), u1]: (v) # v is a free vertex

maxWeightMatching (weights):

«» »given w, the weight matrix of a complete bipartite graph, the mappings Mu: U-> V, Mv: V-> U encoding the matchingwell as the value of it.

«» »U, V, S, T, Mu, Mv, lu, lv, minSlack, w=weights=len (w)=V=range (n)=[max ([w [u] [v] for v in V]) for u in U] # start with trivial labels=[0 for v in V]={} # start with empty matching={} len (Mu)

# val. of matching is total edge weight=sum (lu) + sum (lv)...


Назад | сторінка 12 з 13 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка в середовищі Turbo Pascal програми обчислення суми елементів рядкі ...
  • Реферат на тему: Розробка бази даних на мові програмування Python
  • Реферат на тему: Сортування рядків матриці в програмі Pascal
  • Реферат на тему: Реалізація на мові програмування Сі рішення системи лінійних рівнянь методо ...
  • Реферат на тему: Мова програмування високого рівня Python