প্রাকৃতিক সংখ্যার এক সেটের সর্বাধিক জোড়াওয়ালা জিসিডি দক্ষতার সাথে সন্ধান করুন


9

নিম্নলিখিত সমস্যা বিবেচনা করুন:

দিন এস={গুলি1,গুলি2,গুলিএন} প্রাকৃতিক সংখ্যার একটি সীমাবদ্ধ উপসেট হতে হবে।

দিন জি={ (গুলিআমি,গুলি) | গুলিআমি,গুলিএস, গুলিআমিগুলি} কোথায় (এক্স,Y) সবচেয়ে বড় সাধারণ বিভাজক এক্স এবং Y

এর সর্বাধিক উপাদানটি সন্ধান করুন জি

ইউক্লিডের অ্যালগরিদম ব্যবহার করে এবং সবচেয়ে বড়টির ট্র্যাক রেখে প্রতিটি জোড়ের সর্বশ্রেষ্ঠ সাধারণ বিভাজক গ্রহণ করে এই সমস্যার সমাধান করা যেতে পারে।

এটি সমাধান করার আরও কার্যকর উপায় আছে?


3
আপনি আপনার পিএস এবং কিউ মাইনিংয়ের বিভাগের ৩.৩ বিভাগটি একবার দেখে নিতে পারেন : নেটওয়ার্ক ডিভাইসগুলিতে বিস্তৃত দুর্বল কীগুলি সনাক্তকরণ (হেনঞ্জার এট আল, ইউসেনিক্স সুরক্ষা ২০১২)। তারা জুটিওয়ালা জিসিডি ইন কম্পিউটারের জন্য একটি অ্যালগরিদম বর্ণনা করেহে(এনএলজিএন)পণ্য গাছ এবং বাকী গাছ ব্যবহার করে একটি নির্দিষ্ট সেটিং-এ জিসিডি। যদিও এটি আপনার সমস্যার ক্ষেত্রে প্রসারিত কিনা তা আমি জানি না।
DW

আপনি কি প্রধান কারণগুলির সাথে কিছু চেষ্টা করেছেন?
রায়ান

1
মনে করুন যে সমস্ত সংখ্যা তুলনামূলকভাবে মৌলিক তবে ফ্যাক্টর শক্ত (যেমন প্রতিটি) গুলিআমি সমান পিআমিকুইআমি বড় স্বতন্ত্র primes জন্য পিআমি,কুইআমি)। তারপরে সমস্ত জোড়াযুক্ত জিসিডি চেক করা এড়ানো কঠিন বলে মনে হচ্ছে। (বলুন আমি আপনাকে বলছি যে সমস্ত জোড়া যাচাই করার পরে কিন্তু(গুলিএন-1,গুলিএন) যে সমস্ত জোড়ায় জিসিডি হয় 1। আপনি কিভাবে অনুমান করতে পারেন(গুলিএন-1,গুলিএন)এটির গণনা ছাড়াই?)
usul

@ ইউসুল ডিডাব্লু এর লিঙ্কটি হুবহু সেই সমস্যা। বিশাল সংখ্যা, এক বিলিয়ন বলে, এনক্রিপশন কীগুলি দুটি পৃথক প্রাইমের পণ্য হওয়া উচিত। তবে আমরা সন্দেহ করি যে কিছু এনক্রিপশন কীগুলির একটি সাধারণ উপাদান রয়েছে (যা উভয় কীগুলির জিসিডি হবে, উভয়কে ফ্যাক্টর সহজ করে তোলে)। এই অ্যালগরিদম আপনাকে n (1-1) / 2 গিসিডি n = 1 বিলিয়ন গণনা না করে সাধারণ ফ্যাক্টর সহ কীগুলি সন্ধান করতে দেয়।
gnasher729

উত্তর:


-2

এখানে একটি কার্যকর অ্যালগরিদম ( পাইথনে )। দয়া করে নীচের ব্যাখ্যাটি সন্ধান করুন।

def max_gcd_pair(S):
    # Assumption 1: S is the list of numbers
    # Assumption 2: There are no duplicates in S

    s = set(S)
    m = max(S)

    res = 0
    i = m

    while(i > 0):
        a = i
        cnt = 0
        while (a<=m): # a maxed at max of the list
            if a in s:   
               cnt += 1
            a += i

        if cnt >= 2:  # we have found the result
            res = i
            break

        i = i -1 

    return res

উপরের কোড স্নিপেটের ব্যাখ্যা:

আমরা এই সমস্যায় নিম্নলিখিতটি পর্যবেক্ষণ করি:

  1. ফলাফল এর চেয়ে বেশি হতে পারে না max(S)
  2. ফলাফলটি এমন একটি সংখ্যা যা এই তালিকায় দুটি বা আরও বেশি গুণ রয়েছে S
  3. প্রকৃতপক্ষে ফলাফলটি maxউল্লিখিত সম্পত্তি সহ এই জাতীয় সংখ্যার।

এই পর্যবেক্ষণগুলির সাথে, প্রোগ্রামটি নিম্নলিখিতগুলি করে:

  1. একটি setতালিকা তৈরি করুন । সেটগুলি দক্ষতার সাথে অনুসন্ধান করা যেতে পারেO(log(n))
  2. তালিকার সর্বাধিক সন্ধান করুন এবং এটি ভেরিয়েবলে সংরক্ষণ করুন m
  3. থেকে শুরু করে mপর্যন্ত 1, সেটে দুই বা ততোধিক গুণিতক আছে প্রথম সংখ্যা খুঁজে। এরকম প্রথম সংখ্যাটি পাওয়া গেছে ফলাফল।

আমি আশা করি এটি পরিস্কার। আপনার আরও বিশদ বিবরণ প্রয়োজন হলে আমাকে জানান know


1
আপনি কি আপনার অ্যালগরিদমকে কথায় ব্যাখ্যা করতে পারবেন? এটি কোনও প্রোগ্রামিং সাইট নয়।
যুবাল ফিল্মাস

@ ইউভালফিল্মাস আমি এই ব্যাখ্যাটি যুক্ত করেছি। আশাকরি এটা সাহায্য করবে.
সুভেন্দু রঞ্জন মিশ্র

2
যদি সমস্ত উপাদান অনন্য হয়? এর অর্থ এই নয় যে সর্বাধিক জিসিডি হয় 1. উদাহরণ হিসাবে সেটটি বিবেচনা করুন{2,4}, যেখানে সর্বাধিক জিসিডি 2
যুবাল ফিল্ম

প্রত্যেক জন্য @YuvalFilmus iদিয়ে শুরু mপর্যন্ত 1আমরা চেক যদি দুই বা ততোধিক গুণিতক এর iসেটে আছে। এই বিস্ময়করূপে 2 এর দুটি গুণক সেট '2 এবং 4`' তে রয়েছে ` তাই উত্তর 2. ভেতরের হয় whileলুপ চেক সব multples iপর্যন্ত m' as m` তালিকার masx হয়।
সুভেন্দু রঞ্জন মিশ্র

1
ঠিক আছে, এটি একটি ভয়ানক অ্যালগরিদম। দুটি সংখ্যার অ্যারের জন্যএক্স,Y দৈর্ঘ্যের এনপ্রতিটি বিট, জিসিডি গণনা করতে বহুপদী সময় লাগে, যখন আপনার অ্যালগরিদম সবচেয়ে খারাপ ক্ষেত্রে (যখন সংখ্যাগুলি তুলনামূলকভাবে মৌলিক হয়) ক্ষেত্রে তাত্পর্যপূর্ণ সময় নেয়।
যুবাল ফিল্মাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.