প্রদত্ত বুদ্বুদ্বৈত অ্যালগরিদমের গড় সময়ের জটিলতার মূল্যায়ন।


11

বুদবুদোর এই সিডো কোডটি বিবেচনা করে:

FOR i := 0 TO arraylength(list) STEP 1  
    switched := false
    FOR j := 0 TO arraylength(list)-(i+1) STEP 1
        IF list[j] > list[j + 1] THEN
            switch(list,j,j+1)
            switched := true
        ENDIF
    NEXT
    IF switched = false THEN
        break
    ENDIF
NEXT

গড় সময়-জটিলতার মূল্যায়ন করার জন্য আমার যে মূল ধারণাগুলি মনে রাখতে হবে? আমি ইতিমধ্যে সবচেয়ে খারাপ এবং সেরা কেসগুলি গণনা করতে পেরেছি, তবে সমীকরণটি গঠনের জন্য, অভ্যন্তরীণ লুপের গড় জটিলতা কীভাবে মূল্যায়ন করতে হবে তা বিবেচনা করে আমি আটকে রয়েছি।

সবচেয়ে খারাপ ক্ষেত্রে সমীকরণটি হ'ল:

i=0n(j=0n(i+1)O(1)+O(1))=O(n22+n2)=O(n2)

যার মধ্যে অন্তঃস্থ সিগমা অভ্যন্তরীণ লুপকে উপস্থাপন করে এবং বাইরের সিগমা বাইরের লুপকে উপস্থাপন করে। আমি মনে করি যে "if-then-ব্রেক" -ক্লাউজের কারণে আমাকে উভয় সিগমাস পরিবর্তন করতে হবে যা বাইরের সিগমাতে প্রভাব ফেলতে পারে তবে অভ্যন্তরীণ লুপের if-claus এর কারণেও হতে পারে, যা একটি লুপের সময় করা ক্রিয়াকে প্রভাবিত করবে (4 টি ক্রিয়াকলাপ 1 টি তুলনা যদি সত্য হয়, অন্যথায় কেবল 1 তুলনা)।

গড়-সময় শব্দটি সম্পর্কে স্পষ্টতার জন্য: এই বাছাই করা অ্যালগরিদমকে বিভিন্ন তালিকায় (একই দৈর্ঘ্যের) বিভিন্ন সময় প্রয়োজন হবে, কারণ তালিকাটি সম্পূর্ণরূপে সীমাবদ্ধ না হওয়া পর্যন্ত অ্যালগরিদমের লুপগুলির মধ্যে / কমপক্ষে আরও কম পদক্ষেপের প্রয়োজন হতে পারে। আমি প্রয়োজনীয় round রাউন্ডগুলির গড় মূল্যায়ন করার জন্য একটি গাণিতিক (নন স্ট্যাটিস্টিকাল উপায়) সন্ধান করার চেষ্টা করি।

এটির জন্য আমি কোনও আদেশ একই সম্ভাবনা হওয়ার আশা করি।


6
আপনাকে প্রথমে গড়ের অর্থ কী তা নির্ধারণ করতে হবে। যেহেতু অ্যালগোরিদম নির্বিচারক, তাই আপনাকে ইনপুটগুলির উপর কোনও প্রকারের বিতরণ ধরে নিতে হবে।
সুরেশ

@ সিম আপনি কীভাবে সবচেয়ে খারাপ সময়ের জটিলতা গণনা করতে পারবেন? তারপরে, আপনার ক্ষেত্রে গড় জটিলতার দ্বারা আপনি কী বোঝাতে চেয়েছেন সে সম্পর্কে আমরা ধারণা পেতে পারি।
0x0

আমার সর্বাধিক সম্ভাব্য সময়ের পথে গড় সময় মানে (বা অন্য কথায় 'খাঁটি' গাণিতিক সংস্করণ: একটি পরিসংখ্যান বিশ্লেষণ করে দেখা সর্বকালের গড়)। উদাহরণস্বরূপ, কুইকোর্টের গড় ক্ষতি হয় না যদিও এর সবচেয়ে খারাপ পরিস্থিতি এন case 2।
সিম

1
@ সিম বুদবুদ সাজানোর ক্ষেত্রে গড় ক্ষেত্রে = সবচেয়ে খারাপ ক্ষেত্রে সময় জটিলতা, অর্থাত্ গড় গড় সময় টাইম জটিলতাও n2
0x0

3
একটি পার্থক্য আছে। কুইকোর্টের গড় গড় "পাইভোট নির্বাচন করার সময় কয়েন টোসিসের পছন্দের তুলনায়" "যা ডেটার সাথে কিছু করার নেই। আপনি বোঝাচ্ছেন যে আপনি গড় "সমস্ত ইনপুটগুলি" গড় করতে চান যা ধরে নিয়েছে (উদাহরণস্বরূপ) যে আপনি প্রত্যাশা করেছেন যে প্রতিটি ইনপুট ক্রম একই সম্ভাবনার সাথে ঘটবে। এটি যুক্তিসঙ্গত, তবে এটি স্পষ্টভাবে বলা উচিত।
সুরেশ

উত্তর:


9

দৈর্ঘ্যের তালিকাগুলির জন্য , গড়ের অর্থ সাধারণত আপনাকে সমস্ত এনতে সমান বিতরণ দিয়ে শুরু করতে হবে ! [ , .., এন ] এর অনুমান : এটি আপনাকে বিবেচনা করতে হবে এমন সমস্ত তালিকা।nn!1n

আপনার গড় জটিলতা তখন দ্বারা বিভক্ত সমস্ত তালিকার জন্য পদক্ষেপের সংখ্যার যোগফল হবে ! n!

(xi)inddxiimaxi(max(1,ixi))

তারপর আপনি গণিত: প্রত্যেকের জন্য সংখ্যা খুঁজে বের এই বিশেষ সর্বাধিক দূরত্ব সঙ্গে তালিকার তারপর, প্রত্যাশিত মান হল:d ddcdd

1n! d=0n dcd

এবং এটিই সবচেয়ে কঠিন অংশটি ছাড়া মূল ধারণা যা খুঁজে । যদিও এর একটি সহজ সমাধান রয়েছে।cd

সম্পাদনা: যোগ করা 'প্রত্যাশিত'


আপনি যদি কোনও সাধারণ বিতরণ বিবেচনা করেন, তাহলে কি আনুমানিক করার কোনও উপায় আছে ? cd
সিম

আপনিকারণ আপনি যে কোন জায়গায় সব একাধিক বিন্যাসন মিশ্রিত করতে পারেন [ , .., ] এবং পরিশেষে যোগ শেষে কিন্তু কম যে এর প্রমাণ করার গড়। 2 ডি 1cd(n+1d)(d1)!2d1n²
jmad

19

মনে করুন যে একটি জোড় (রেস। ) বিপরীত হয় যদি এবং ।( আই , জে ) আই < জে [ আই ] > [ জে ](A[i],A[j])(i,j)i<jA[i]>A[j]

আপনার অ্যালগরিদম প্রতিটি বিপর্যয়ের জন্য একটি অদলবদল করে ধরে নেওয়া, আপনার অ্যালগরিদমের চলমান সময় বিপর্যয়ের সংখ্যার উপর নির্ভর করবে।

অভিন্ন র্যান্ডম অনুচ্ছেদে বিবর্তনের প্রত্যাশিত সংখ্যা গণনা করা সহজ:

যাক একটি বিন্যাস হবে | এর বিপরীত হতে । উদাহরণস্বরূপ, যদি তারপর ।আর ( পি ) পি পি = 2 , 1 , 3 , 4 আর ( পি ) = 4 , 3 , 1 , 2PR(P)PP=2,1,3,4R(P)=4,3,1,2

প্রতিটি জোড় সূচকের জন্য বা যেকোন একটিতে একটি বিপরীতমুখী রয়েছে ।পি আর ( পি )(i,j)PR(P)

যেহেতু মোট জোড়ার সংখ্যা , এবং মোট সংখ্যা এবং প্রতিটি জুটি যথাক্রমে অর্ধেকের মধ্যে উল্টানো হয়, সমস্ত অনুমানের সমান সম্ভাবনা রয়েছে বলে ধরে নিলে, প্রত্যাশিত বিপর্যয়ের সংখ্যাটি হ'ল:n(n1)/2

n(n1)4

এটি বিপর্যয়ের পরিমাণকে মূল্যায়ন করে। তবে ব্রেক তুলনামূলক পদক্ষেপের
সিম

আপনি অদলবদলের মাধ্যমে একটি তুলনা পেয়েছেন এবং সর্বাগ্রে গুরুত্বপূর্ণ যে একটি সোয়াপ সর্বাধিক এক দ্বারা বিবর্তনের সংখ্যা হ্রাস করতে পারে।
jmad

প্রতিটি তুলনার ফলাফল অদলবদলে হয় না, যদি-ক্লজটি মিথ্যা হয়, কোনও বিবর্তন করা হয় না।
সিম

@ আরগ্রিগ যদি আপনি একটি পাল্টা উদাহরণ সরবরাহ করেন তবে আমি আমার উত্তরটি সংশোধন করব।
জো

@ জো: আমি আমার মন্তব্য সরিয়েছি। এটা ভুল ছিলো.
rgrig

2

অদলবদলের সংখ্যা <পুনরাবৃত্তির সংখ্যা (উভয় ক্ষেত্রে অপ্টিমাইজড পাশাপাশি সাধারণ বুদ্বুদ ক্ষেত্রে)

বিপর্যয়ের সংখ্যা = অদলবদলের সংখ্যা।

অতএব, আইটেমের সংখ্যা>n(n1)4

সুতরাং, গড় কেস জটিলতা হ'ল । তবে, যেহেতু গড়ের মামলাটি সবচেয়ে খারাপ ক্ষেত্রে ছাড়িয়ে যায়, আমরা দেখতে পেলাম যে এটি ,( এন 2 )ω(n2)O(n2)

এটি আমাদের দেয়: গড় সময় = θ(n2)

(সময়ের জটিলতা = পুনরাবৃত্তির পুনরাবৃত্তির সংখ্যা> অদলবদলের সংখ্যা)


0

এই দস্তাবেজে, বুদ্বুদ সাজানোর গড় সময়ের জটিলতা হে (এনলগ (এন)) এ পৌঁছেছে! http://algo.inria.fr/flajolet/Publications/ViFl90.pdf


1
এটা সত্যি না. তারা নথের ফলাফল প্রমাণ করে যে তুলনা করার প্রত্যাশিত সংখ্যা মোটামুটি 2/2 । n2/2
যুবাল ফিল্মাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.