كيف تعقيد وقت الخوارزمية في الوقت المناسب elogv باستخدام الأولوية س؟

StackOverflow https://stackoverflow.com/questions/1315644

سؤال

كود الزائفة التي استخدمتها:

for all V vertices: visited[n]=0

pick any vertex r from graph and set visited[r]=1

For all edges e incident to r
PQ.insert()

while(PQ is not empty)//line 1
  f=PQ.min()//f(r,s) is such that visited[s]=0
  for all edges e(s,t) incident to s//line 2
     if(visited[t]==0)
        PQ.insert(e);//line 3
     else
        PQ.delete(e);//line 4
  visited[s]=1;
end while;

وفقا لتفهمي:

  • الخط 1: ينفذ V-1 مرات.
  • الخط 2: مجموع درجة من جميع القمم أوقات ....that هو 2E مرات

لكل سطر 2: السطر 3 والخط 4 log E الوقت لأننا نضيف / حذف جميع الحواف إلى / من PQ واحدا تلو الآخر.

إجمالي ذلك time= V-1+2E.logE = E.log E

لكن الكتاب يقول أنه E.logV, ، هل يمكن أن تفسر لماذا هذا؟

هل كانت مفيدة؟

المحلول

o (سجل (v)) و o (سجل (e)) هو نفسه.

  • ه على الأكثر الخامس2.
  • سجل (خامسا2) = 2 * سجل (v)
  • وهو o (سجل (v))

نصائح أخرى

لجميع الحواف E (S، T) حادث

كم عدد حواف العقدة s يمكن أن يكون على الأكثر؟
V-1 في الغالب. لذلك، تعقيد العمليات PQ O (LOGV) التعقيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top