বিভিন্ন লাঠি থেকে সমান লাঠি কাটা


10

আপনার কাছে নির্বিচারে লেন্থ এর লাঠি, অগত্যা অবিচ্ছেদ্য নয়।n

কিছু লাঠি কেটে (একটি কাটা একটি লাঠি কেটে দেয়, তবে আমরা যতবার চাই কাটতে পারি), আপনি স্টিক পেতে চান যে:k<n

  • এই সমস্ত স্টিকের দৈর্ঘ্য একই;k
  • সমস্ত কাঠি কমপক্ষে অন্য সমস্ত কাঠি হিসাবে দীর্ঘ।k

নোট করুন যে আমরা কাটগুলি সম্পাদনের পরে স্টিকগুলি পাই ।সিn+CC

প্রয়োজনীয় কাটার সংখ্যা ন্যূনতম হলে আপনি কোন অ্যালগরিদম ব্যবহার করবেন? আর সেই সংখ্যাটি কী?

উদাহরণস্বরূপ, এবং যে কোনও । নিম্নলিখিত অ্যালগরিদম ব্যবহার করা যেতে পারে:এন 2k=2n2

  • দৈর্ঘ্যের ক্রমবর্ধমান ক্রমের সাহায্যে লাঠিগুলি অর্ডার করুন যাতে ।L1L2Ln
  • যদি তবে স্টিক কে 1 1 থেকে দুটি সমান টুকরো টুকরো টুকরো টুকরো টুকরো করে কাটা এখন দৈর্ঘ্যের দুটি কাঠি রয়েছে , যা বাকি লাঠিগুলি হিসাবে কমপক্ষে দীর্ঘ ।এল 1 / 2 2 ... এনL12L2L1/22n
  • তা না হলে ( ), কাটা লাঠি আকারের # 1 থেকে দুই অসম টুকরা এবং । এখন দৈর্ঘ্য দুটি লাঠি হয় , যা চেয়ে দীর্ঘতর হয় এবং অন্যান্য লাঠি ।এল 2 এল 1 - এল 2 এল 2 এল 1 - এল 2 3 এনL1<2L2L2L1L2L2L1L23n

উভয় ক্ষেত্রেই, একটি একক কাটা যথেষ্ট।

আমি এটিকে বৃহত্তর সাধারণীকরণের চেষ্টা করেছি , তবে বিবেচনা করার মতো অনেকগুলি বিষয় রয়েছে বলে মনে হচ্ছে। আপনি একটি মার্জিত সমাধান খুঁজে পেতে পারেন?k

উত্তর:


6

এই সমস্যাটি সমাধান করার প্রথম মূল পর্যবেক্ষণ হ'ল একটি কাটিয়া দৈর্ঘ্যের সম্ভাব্যতা ,l

Feasible(l)=[i=1nLilk] ,

টুকরোচক ধ্রুবক, বাম-অবিচ্ছিন্ন এবং বৃদ্ধি না করে । যেহেতু প্রয়োজনীয় কাটার সংখ্যা একইভাবে আচরণ করে, তাই সর্বোত্তম দৈর্ঘ্য সন্ধান করা ঠিকl

l=max{lFeasible(l)}

তদ্ব্যতীত, অন্যান্য উত্তরগুলির প্রস্তাব অনুসারে, সমস্ত জাম্প বিচ্ছিন্নতার ফর্ম । এটি আমাদেরকে একটি পৃথক, এক-মাত্রিক অনুসন্ধান সমস্যা বাইনারি অনুসন্ধানের জন্য উপযুক্ত করে তোলে (প্রার্থীদের একটি সীমাবদ্ধ সাজানোর পরে)।Li/j

আরও মনে রাখবেন যে আমাদের কেবল বিবেচনা করতে হবে যা লার্জস্টের চেয়ে কম , কারণ এটি সর্বদা সম্ভাব্য।Lik

তারপরে, বিভিন্ন সীমানা বিভিন্ন দক্ষতার অ্যালগোরিদমকে নিয়ে যায়।j

  • 1jk ফলাফল চতুর্ভুজ আকারের অনুসন্ধানের স্থানে ( ),k
  • 1jk/i একটি (অনুমান করে যে হ্রাস হ্রাস করে সাজানো হয়), এবংLi
  • লিনিয়ার একের সাথে সামান্য আরও জড়িত সীমা

এটি ব্যবহার করে আমরা প্রস্তাবিত সমস্যাটি সময় এবং স্পেস ।Θ(n+klogk)Θ(n+k)

এক আরও পর্যবেক্ষণ যে সমষ্টি বৃদ্ধি দ্বারা প্রতিটি প্রার্থী "পাস", সদৃশ বেড়ে চলেছে। এটি ব্যবহার করে, আমরা বাইনার অনুসন্ধানের পরিবর্তে র‌্যাঙ্ক নির্বাচন ব্যবহার করতে পারি এবং সময় এবং স্পেসে চালিত একটি অ্যালগরিদম পেতে পারি , যা সর্বোত্তম।Feasiblel1Li/jΘ(n)

আমাদের নিবন্ধে বিশদতম কাটগুলির সাথে হিংসা-মুক্ত স্টিক বিভাগের দক্ষ অ্যালগরিদমগুলিতে বিশদটি সন্ধান করুন (রিটিজিগ এবং ওয়াইল্ড, 2015)।


দেখা যাচ্ছে যে, কাঠি কাটার বিষয়ে আমাদের দৃষ্টিভঙ্গি থেকে ধারণাগুলি আরও সাধারণ সমস্যা বা (আনুপাতিক) ভাগ , ব্যবহারিক প্রাসঙ্গিকতার সমস্যা নিয়ে আসে; আমাদের সংক্ষিপ্ত নিবন্ধ দেখুন ।
রাফায়েল

4

@ র্যান্ডোএমএর পরামর্শ অনুসারে, আমরা দুটি ধাপে এগিয়ে যাব: আমরা প্রথমে লাঠিগুলির সেটটি পাই যা কাটা হবে এবং তারপরে কাটার সংখ্যা হ্রাস করুন।

প্রশ্নের বিশেষ ক্ষেত্রে হিসাবে, আমরা লাঠিগুলি বাছাই / নামকরণ করি যাতে । এটি সময় নেয়।L1L2LnO(nlogn)

হিসাবে @ user1990169 নির্দিষ্ট, আমরা একটা অংশ কেটে নিতে হবে না ।ik

প্রথম পর্যায়ে আমরা সংখ্যার , সন্ধান করার জন্য বাইনারি অনুসন্ধান নিযুক্ত করি , যাতে লাঠি কমপক্ষে আকারের কেটে ফেলা যায় (আরও কিছু ছোট টুকরা) কিন্তু লাঠি কাটা হতে পারে না আকারের টুকরা । এটি সময় নেবে ।s1sk1,,skLs1,,s1kLs1O(klogk)

যদি হয় তবে এই মানটি সর্বোত্তম আকার এবং আমরা দ্বিতীয় ধাপটি এড়িয়ে যেতে পারি।Ls1=Ls

তা না হলে আমরা জানতে পারি যে অনুকূল আকার সন্তুষ্ট এবং যদি তারপর সমান আকারের টুকরা লাঠি অন্তত একটি কাটিং থেকে ফলাফল নেই। দ্বিতীয় পর্যায়টি নির্ধারণ করবে :oLs1>oLso>Lsoo

প্রতিটি লাঠি জন্য , প্রার্থী আকারের একটি সেট নির্ধারণ নিম্নরূপ: আকারের টুকরা কাটা যদি মধ্যে লাঠি সক্রিয় টুকরা (খাটো সহ, যদি থাকে), তারপর এই জন্য প্রার্থীদের লাঠি সব মান , যেখানে এবং । ( এই একমাত্র প্রার্থীর আকার হ'ল @ ব্যবহারকারী ১৯৯৯০১69৯ এর উত্তর দেখুন ))i1isLsriLijjriLij<Ls1

প্রতিটি প্রার্থীর আকারের জন্য বজায় রাখুন, এটি কতবার ঘটেছে। ভারসাম্যযুক্ত অনুসন্ধান ট্রি ব্যবহার করে এটি করা যেতে পারে , যেহেতু মোট পরীক্ষার্থীর আকারের সংখ্যা দ্বারা আবদ্ধ ।O(klogk)iri2k

এখন প্রার্থীর আকার যা প্রায়শই ঘটে থাকে এবং একটি বৈধ কাটিংয়ের দিকে পরিচালিত করে সেটিই আমাদের সর্বোত্তম সমাধান দেয় gives তদ্ব্যতীত, কোনও প্রার্থীর আকার যদি বৈধ কাটতে পরিচালিত করে, ছোট আকারের সাথে বৈধ কাটিংও হবে।

সুতরাং আমরা আবার বৃহত্তম প্রার্থী দৈর্ঘ্য এটি বাইনারি অনুসন্ধান চাকরী করতে পারে একটি বৈধ কাটার বিশালাকার । তারপরে আমরা এই প্রান্তিক পর্যন্ত প্রার্থীর দৈর্ঘ্যের সেটটি নিয়ে পুনরাবৃত্তি করি এবং মধ্যে তাদের মধ্যে সর্বাধিক জনগণের মধ্যে একটি পাই ।O(klogk)O(k)

সামগ্রিকভাবে আমরা , বা এ একটি রানটাইম পাই, যদি আমরা প্রাথমিক বাছাইটিকে উপেক্ষা (বা করতে হবে না)।O(nlogn)O(klogk)


বাইনারি অনুসন্ধান পদক্ষেপে, আপনি কেমন ঠিক চেক করবেন যদি "লাঠি মধ্যে অন্তত কাটা হতে পারে আকারের টুকরা "? 1,,skLs
এরেল সেগাল-হালেভি

জন্য কম্পিউট । এই মানগুলির যোগফলটি আপনি যে পরিমাণ টুকরো পেতে পারেন তা। 1isLi/Ls
ফ্র্যাঙ্কডব্লিউ

"প্রার্থীর আকার যা প্রায়শই দেখা দেয় ... সেটাই আমাদের অনুকূল সমাধান দেয়" - কেন?
এরেল সেগাল-হালেভি

প্রতিটি সময় এটি ঘটে Becase, আমরা একটি লাঠি, যে দান করে আছে দিয়ে তোমাকে টুকরা টুকরা কাট। tt1
ফ্রাঙ্কডব্লু

1
মোট কাটার সংখ্যা কে 2 সেরা ক্ষেত্রে ( equal সমান দৈর্ঘ্যের স্টিকস, অন্যান্য সমস্ত কাঠি যতক্ষণ না এই অর্ধেক দৈর্ঘ্য এবং যতদূর আমি দেখতে পাচ্ছি কখনও কখনও চেয়ে বেশি হবে না It স্পষ্টভাবে কখনই চেয়ে বেশি হবে না , কারণ প্রতিটি কাটা সঠিক দৈর্ঘ্যের একটি কাঠি এবং একটি অবশিষ্ট ফল দেয় inder তবে মনে হয়, আমরা সর্বদা একটি আকার চয়ন করতে পারি যাতে কমপক্ষে একটি কাটা সঠিক দৈর্ঘ্যের একটি অবশিষ্ট অংশ ছেড়ে যায় I আমি না যদিও এর জন্য একটি প্রমাণ আছে))k2k2k1k
ফ্রাঙ্কডাব্লু

1

পরে আপনি তাদের লেন্থ অনুযায়ী সাজানো লাঠি আদেশ করেছেন, তারপর লাঠি শুধুমাত্র যদি সব লাঠি ফেলতে হবে কাটা হয়েছে।LiL1,L2,...Li1

এখন যেহেতু , আমরা উপর লাঠি কোন কাটা তৈরী করবে না | অগ্রে, যেহেতু আমরা সবসময় থাকতে পারে দৈর্ঘ্য সঙ্গে লাঠি ।k<nLkkLk

তাই এখন পরিবর্তে , আমরা কেবল সাথে ডিল করা হয় লাঠি (সম্ভবত যোগ সামগ্রিকভাবে -th লাঠি), এবং মধ্যেও যে সবচেয়ে খারাপ ক্ষেত্রে গ্রহণের প্রয়োজন হইবে সর্বোচ্চ সংখ্যক ।nk1k=k1

এছাড়াও, যদি কাটনের সর্বোত্তম সংখ্যার তবে সেই স্টিকের মধ্যে কমপক্ষে একটি সেট থাকতে হবে যা 1 টি মূল কাঠি<k1k1 ( পুরো অংশে বা 1 টুকরা) থেকে পুরো হিসাবে নেওয়া হবে অর্থাত্, মূল স্টিকের কোনও অংশই 'অচেনা' রেখে যাবে না। এটি কারণ, কবুতর-গর্ত নীতি অনুসারে, কমপক্ষে 1 টি কাটা থাকতে হবে যা 1 টির বেশি বৈধ কাঠি উত্পাদন করতে হবে।

আপনি লুপের জন্য দুটি নেস্টেড (উভয় পর্যন্ত ) পরিচালনা করতে পারেন । বহিরাগত লুপটি সেই কাঠি নম্বরটি বোঝায় যা এর সমস্ত অংশ গ্রহণ করতে হবে এবং অভ্যন্তরীণ লুপটি stick স্টিকের তৈরি অংশের সংখ্যা বোঝায় । প্রতিটি আকারের জন্য পরীক্ষা করে দেখুন যে আপনি পরের ধারাবাহিকভাবে লাঠিগুলি কেটে সম্ভাব্য কে-লাঠিগুলি পেতে পারেন এবং যদি আপনি পারেন তবে বর্তমানের প্রয়োজনীয় সংখ্যাটি কম হলে এখন পর্যন্ত প্রয়োজনীয় সর্বনিম্ন কাটগুলি আপডেট করুন।kij
LijL1

উপরের অ্যালগরিদমের মোট জটিলতা হ'লO(nlog(n)+k3)


1

উচ্চ স্তরের ধারণাটি বাইনারি অনুসন্ধান হবে।

অনুরোধ করা প্রতিটি কে স্টিকের আকার কমপক্ষে সবচেয়ে ছোট কাঠি এবং সর্বাধিক সবচেয়ে বড় স্টিক হবে। এর কারণে, আমরা মাঝের স্টিকের আকারের উপর বাইনারি অনুসন্ধান ব্যবহার করে এগিয়ে চলেছি, আমরা পেতে পারি তা দেখুন , যদি এই প্রদত্ত চেয়ে বেশি হয় তবে আমরা জানি আমাদের নতুন রেফারেন্স প্রার্থীর আকার বাছাই করা দরকার। সুতরাং আমরা নতুন রেফারেন্স স্টিক ব্যবহার করে বড় বা আরও ছোটতে চলে যাই। আমরা বন্ধ যখন চেয়ে কম হয়kkkkk

একবার আমরা যথাযথ রেফারেন্স স্টিকটি পেয়ে গেলে, এমন একটি কোণার কেস রয়েছে যেখানে আমাদের আরও আকারটি আরও পরিমার্জন করতে হবে। আমরা সমস্ত কাটা লাঠি তাদের কাটা সংখ্যা এবং কাঠির আকার অনুসারে বাছাই করতে পারি। সর্বনিম্ন সংখ্যক কাট এবং সর্বনিম্ন আকারের সাথে এটি চয়ন করুন। এই স্টিকের কাটের সংখ্যা 1 দ্বারা হ্রাস করুন এবং সমান আকারের এটির সমস্ত উপ-স্টিক তৈরি করুন। এটিই নতুন রেফারেন্স আকার হবে, এই নতুন আকারটি গ্রহণযোগ্য তে বাড়াতে পারে কিনা তা পরীক্ষা করে দেখুন । আমি স্বীকার করি, এই ক্ষেত্রে চলমান সময়কে কীভাবে আবদ্ধ করতে হবে তা আমি জানি না।k

আশা করি, আমি অন্যান্য উত্তর থেকে দরকারী কিছু দেখতে পাচ্ছি।


2
আমি মনে করি আপনার পদ্ধতির প্রাথমিক ধারণাটি কাজ করবে। তবে আপনার অ্যালগরিদমের বিবরণ নিশ্চিত হওয়ার পক্ষে যথেষ্ট পরিষ্কার নয়। আপনি কি আরও বিস্তারিত সিউডোকোড যুক্ত করতে পারেন?
ফ্র্যাঙ্কডব্লু

@ ফ্র্যাঙ্কডব্লিউ যদিও চলমান সময় সম্পর্কে আমি খুব বেশি নিশ্চিত নই। আমি দেখতে পাচ্ছি অন্যান্য লোকেরা কী আছে, এটি জিজ্ঞাসা করা বেশ আকর্ষণীয় প্রশ্ন।
অবহিত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.