নির্দিষ্ট সংখ্যক লাইনে পাঠ্য সমানভাবে ভাঙ্গুন


12

সর্বাধিক প্রস্থের লাইনে সমানভাবে পাঠ্য ভাঙ্গার জন্য একটি রৈখিক সময় অ্যালগরিদম রয়েছে। এটি এসএমএডাব্লুকে (বা নুথ অ্যান্ড প্লাস) এবং "সমানভাবে" অর্থ: http://en.wikedia.org/wiki/Word_wrap# মিনিমাম_রেজিডনেস

উপরের অ্যালগরিদমের জন্য কোনও অ্যালগরিদম বা একটি অবতল ব্যয়ের কার্যকারিতা রয়েছে যা সর্বাধিক লাইনের প্রস্থের পরিবর্তে পাঠ্যটি ভাঙতে চাইলে আমি যে রেখাগুলি ভাঙ্গতে চাইব তা বিবেচনা করবে? রৈখিক সময়েও?

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

কেবল একটি ব্যবহারিকভাবে ব্যবহারযোগ্য অব্যবহৃত পদ্ধতির বর্ণনা দিতে: প্রতিটি শব্দের জোড়ার মধ্যে এন শব্দ এবং এন -1 স্পেস রয়েছে, এম হ'ল রেখার পছন্দসই সংখ্যা (এম <= এন)। প্রতিটি স্থানের পরে কমপক্ষে একটি (সম্ভবত শূন্য) লাইন-ব্রেক হতে পারে। এখন, অ্যালগরিদম "সম্ভাব্যতা" গণনা করে প্রতিটি সম্ভাব্য সংমিশ্রণে বিরতি স্থাপনের চেষ্টা করবে এবং সেরাটি ফিরিয়ে দেবে। কীভাবে এটি আরও দ্রুত করা যায়?

এছাড়াও, এই জাতীয় সমস্যার কোনও নাম আছে? এটি কোন "পরিবারের" সমস্যার সাথে সম্পর্কিত? (উদাহরণস্বরূপ "বিন প্যাকিং") যদি আমার পুরোপুরি অনুকূল সমাধানের প্রয়োজন না হয়, তবে খুব খুব ভাল, খুব দ্রুত সমাধান করা কি সম্ভব? (হিউরিস্টিক্সের কিছু ফর্ম ব্যবহারযোগ্য হতে পারে, যদি কোনও প্রদত্ত ইনপুট জন্য সর্বদা একই থাকে, সম্ভবত উপ-অনুকূল, সমাধান)।

হালনাগাদ

চন্দ্র চেকুরি পরামর্শ দিলেন "ক্লিনবার্গ এবং টার্ডোস অধ্যায়ের একটি সমস্যা ডায়নামিক প্রোগ্রামিং" " এটি একটি ভাল পঠিত ছিল তবে এটি লাইন গণনার চেয়ে প্রস্থের ভিত্তিতে লাইন ব্রেকিং নিয়ে কাজ করে। এটি এই সমস্যার সাথে খাপ খাইয়ে নিতে পারে যা আমি এখনই বের করার চেষ্টা করছি। সমাধানের জন্য এখানে একটি ভাল লিঙ্ক, তারা এমনকি লিনিয়ার সময় এটি সমাধান করার দাবি করে: http://web.media.mit.edu/~dlanman/courses/cs157/HW5.pdf

এছাড়াও, স্কিয়েনার দ্য অ্যালগরিদম ডিজাইন ম্যানুয়ালে "8.5 পার্টিশন সমস্যা" একটি অধ্যায় রয়েছে যা হুবহু অনন্য বিষয় বলে মনে হচ্ছে, আমি এখনও এটি পড়ছি, শক্ত। (দুর্ভাগ্যক্রমে, আমি যা বুঝতে পেরেছি তাতে চতুর্ভুজ সময় জটিলতা রয়েছে)


5
দুর্দান্ত গতিশীল প্রোগ্রামিং সমস্যা! আমি আমার ক্লাসের পরের সেমিস্টারে এটি হোমওয়ার্ক হিসাবে ব্যবহার করতে পারি।
জেফি

3
@ Jɛ ff E আপনি যদি এটি কোনও হোম ওয়ার্ক সমস্যার জন্য ব্যবহার করতে চান তবে ওয়েবে উত্তর প্রকাশের আগে প্রশ্নটি আরও ভাল করে বন্ধ করুন।
জো

1
@ জো: উত্তরে যে কেউ সত্যই আগ্রহী হিসাবে আমি এই প্রশ্নের উত্তর বন্ধ করে না দিয়ে উত্তর দেওয়া পছন্দ করবো।
ইকির হানা

2
@ জো: এটি কোনও হোমওয়ার্ক নয়, আমি সিএসও পড়াশোনা করি না। "হোমওয়ার্ক স্তর" কী যায়, আমি এটি খুব আকর্ষণীয় মনে করি যে কিছু লোকেরা কীভাবে কোনও সমস্যার সমাধান করবেন তা চিত্রায়নও করতে পারে না, অন্যদিকে লোকেরা এটি "হোমওয়ার্ক স্তর" হিসাবে বিবেচনা করে। এটি বলেছিল, উত্তরটি এক সপ্তাহের মধ্যে মুছতে পারে বা উদাহরণ হিসাবে আমার ইমেলটিতে পাঠানো যেতে পারে। এবং পাশাপাশি "সম্পূর্ণ উত্তর" না দেওয়ার জন্য আমি কৃতজ্ঞ হব।
ইকির হানা

3
ডায়নামিক প্রোগ্রামিংয়ের উপর ক্লিনবার্গ এবং তারদোস অধ্যায়টিতে একটি সমস্যা রয়েছে যা লাইনগুলিতে স্ল্যাকগুলির যোগফলকে কমিয়ে আনতে এমনভাবে ফর্ম্যাট করা।
চন্দ্র চেকুরী

উত্তর:


4

MO(NlogU)UN2O(logMloglogN)M=Ω(logN)

MM


আমি খুব দুঃখিত কিন্তু আমি অনুসরণ করি বলে মনে করি না। "প্রান্তের ওজন" কি কোনও শব্দের দৈর্ঘ্য? "গ্রাফ" কেমন দেখাচ্ছে? এটি কি কেবল একটি রৈখিক গ্রাফ যেখানে নোডগুলি ব্রেকপয়েন্ট এবং প্রান্তগুলি শব্দের দৈর্ঘ্য? এবং এই "এম-লিঙ্ক পাথ" এটিকে ভেঙে দেয় যাতে ফলস্বরূপ অংশগুলিতে ন্যূনতম যোগ থাকে? তবে সবচেয়ে বড় কথা, প্রথম বাক্যে - আমি নিশ্চিত নই যে আমি র‌্যাগডনেসকে স্বাধীনভাবে গণনা করতে পারি কিনা। এটি প্রায় দীর্ঘতম লাইন এবং আসল লাইনের মধ্যে পার্থক্য তাই অন্য লাইনগুলি সম্পর্কে আমার কিছু জানা দরকার, না? শেষ লাইনের জন্য আরও, দয়া করে উপরের 15 তম মন্তব্য দেখুন।
ইকির হানা

M1N+1(i,j)ij1

@ এসির: গতিশীল প্রোগ্রামিংয়ের উপর ভিত্তি করে সমস্ত অ্যালগরিদমের জন্য আপনি একটি লাইনের র‌্যাগনেসকে স্বাধীনভাবে গণনা করতে পারবেন। যদি এটি না হয় তবে আপনি আমার দ্বিতীয় ধারণার মতো কিছু ব্যবহার করতে চাইতে পারেন: একটি লাইন প্রস্থের অনুমান করুন, সেই প্রস্থের ভিত্তিতে একটি সমাধান গণনা করুন এবং আরও ভাল সমাধান খুঁজতে পুনরাবৃত্তি করুন।
জৌনি স্যারন

ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ. দয়া করে, আমার আরও দুটি প্রশ্ন আছে: "বাইনারি অনুসন্ধান" বিকল্পটি ব্যবহার করার সময়, লাইনগুলির এম সংখ্যাটি গ্যারান্টি দেওয়ার জন্য আমি কি কিছু করতে পারি? যদি আমি প্রতিটি লাইনের প্রস্থে ছোট্ট এলোমেলো এপসিলন যুক্ত করি যাতে একই প্রস্থের সাথে কোনও লাইন না থাকে, আমি বিরতি স্থাপনের ক্ষেত্রে আরও রেজোলিউশন পেতে পারি।
ইকির হানা

এবং "এম-লিংক পাথ" এর ক্ষেত্রে উভয় কাগজই উল্লেখ করেছে যে "ও (এন কে) সময়ে ন্যূনতম কে-লিংক পথটি গণনা করা যায়" - আপনি সম্ভবত জানেন যে তাদের অর্থ কী? আমি এটিতে আর কোনও তথ্য পাই না। সমস্যাটি হ'ল, এই কাগজপত্রগুলি আমার ছোট্ট মাথার জন্য খুব সামান্য জটিল তাই আমি আরও তথ্য, সম্ভবত একটি বাস্তবায়ন, ...
ইকির হানা

-3

আমি জানি না এটি সাহায্য করে কিনা, তবে এই মন্তব্যটির শেষে কেউ আপনার পিএইচপি-তে যা চান তা প্রয়োগ করে; হতে পারে আপনি আলগোরিদিমটি বের করতে পারেন।


4
মন্তব্যে তারা পছন্দসই সংখ্যক লাইনের পরে বাকী রেখাগুলি কেটে ফেলেছে। তারা পিএইচপি ব্যবহার করে wordwrap(), যা মোড়কের জন্য লোভী (অর্থাত্ "সমানভাবে" নয়) অ্যালগরিদম ব্যবহার করে। তারপরেও, প্রশ্নটি কীভাবে $widthযুক্তির "অনুমান" করা যায় wordwrap()। তবে উত্তরের জন্য ধন্যবাদ, যাইহোক!
ইকির হানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.