দূরত্বের সাথে সম্পর্কিত নয় এমন ব্যয়কে হ্রাস করার সময় একটি সংখ্যা লাইনে পয়েন্ট দেখার জন্য


18

এই এসিএম আইসিপিসি সমস্যাটিতে আমার কিছু সহায়তা দরকার। আমার বর্তমান ধারণাটি এটিকে একটি সংক্ষিপ্ততম পথ সমস্যা হিসাবে মডেল করা, যা সমস্যার বিবৃতিতে বর্ণিত described

সমস্যা

আছে N = 1000পারমাণবিক বর্জ্য এ একটি 1-ডি নম্বর লাইন বরাবর অবস্থিত পাত্রে স্বতন্ত্র থেকে অবস্থানের -500,000 to 500,000ছাড়া, x=0। একজন ব্যক্তিকে সমস্ত বর্জ্য বিনগুলি সংগ্রহ করার দায়িত্ব দেওয়া হয়। প্রতি সেকেন্ডে যে কোনও বর্জ্য ধারক সংগ্রহ করা হয় না, এটি বিকিরণের 1 ইউনিট নির্গত করে। ব্যক্তিটি শুরু হয় x = 0এবং 1প্রতি সেকেন্ডে ইউনিট স্থানান্তর করতে পারে , এবং বর্জ্য সংগ্রহ করতে একটি নগণ্য পরিমাণ সময় নেয়। আমরা সমস্ত পাত্রে সংগ্রহ করার সময় ন্যূনতম পরিমাণে তেজস্ক্রিয়তা খুঁজে পেতে চাই।

নমুনা ইনপুট:

4পাত্রে অবস্থিত [-12, -2, 3, 7]

এই ধারকগুলি সংগ্রহের সর্বোত্তম ক্রমটি হ'ল [-2, 3, 7, -12]নূন্যতম 50ইউনিট নির্গমন করার জন্য । ব্যাখ্যা: ব্যক্তিটি -22 সেকেন্ডে যায় এবং সেই সময় 2 unitsবিকিরণের সময় নির্গত হয়। তারপরে তিনি 3(দূরত্ব 5:) এ যান যাতে ব্যারেল 2 + 5 = 7বিকিরণের ইউনিট প্রকাশ করে । যে ব্যারেল ইউনিট নির্গত 4হয়েছে x = 7সেখানে যেতে তিনি আরও সেকেন্ড সময় নেন 2 + 5 + 4 = 11। যে ব্যারেল ইউনিট নির্গত 19হয়েছে x = -12সেখানে যেতে তিনি কয়েক সেকেন্ড সময় নেন 2 + 5 + 4 + 19 = 302 + 7 + 11 + 30 = 50, যা উত্তর।

মন্তব্য

একটি সুস্পষ্ট O(N!)সমাধান আছে। তবে, আমি লোভী পদ্ধতিগুলি যেমন নিকটতমের দিকে চলে যাওয়া বা নিকটতম ক্লাস্টারে চলে যাওয়ার মতো অন্বেষণ করেছি তবে সেগুলি কার্যকর হয়নি।

আমি এই সমস্যাটি নিয়ে বেশ কিছুক্ষণ ভেবেছি এবং এটিকে গ্রাফ অনুসন্ধানের সমস্যা হিসাবে মডেলিং করেছি:

  1. আমরা 0একটি বেসলাইন অবস্থান হিসাবে সন্নিবেশ করান (এটি প্রাথমিক অবস্থা হবে)
  2. তারপরে, আমরা পজিশনগুলি কমপক্ষে থেকে বৃহত্তর পর্যন্ত সাজান
  3. তারপরে আমরা একটি বিএফএস / পিএফএস করি, যেখানে stateরয়েছে
    • দুটি পূর্ণসংখ্যা lএবং rএটি ইতিমধ্যে পরিদর্শন করা শর্তযুক্ত অবস্থানের অ্যারেতে একটি সামঞ্জস্যপূর্ণ পরিসীমা উপস্থাপন করে
    • একটি পূর্ণসংখ্যা locযা আমাদের জানায় আমরা সীমার বাম বা ডান প্রান্তে রয়েছি কিনা
    • একটি পূর্ণসংখ্যা timeযা আমাদের সময় কেটে যায় tells
    • একটি পূর্ণসংখ্যার 'ব্যয়' যা এখন পর্যন্ত আমাদের মোট ব্যয় বলে (আমরা যে নোডগুলি দেখেছি তার উপর ভিত্তি করে)
  4. প্রতিটি রাজ্য থেকে আমরা [l - 1, r] এবং [l, r + 1] এ চলে যেতে পারি, ততক্ষণে অন্যান্য 3 টি পূর্ণসংখ্যার টুইট করে
  5. ফাইনাল স্টেটটি [0, N], উভয় শেষের অবস্থানটি পরীক্ষা করে।

যাইহোক, এটা মনে হচ্ছে যে [L, R, loc]স্বতন্ত্র একটি রাষ্ট্র সংজ্ঞায়িত না, এবং আমরা দোকান আছে L, R, loc, and time, যখন কমানোর costএই প্রতিটি করেন। এটি একটি ঘৃণ্য অ্যালগরিদম বাড়ে, যা এখনও কোনও ভাল জন্য খুব ধীর।

আমার ধারণা সম্পর্কে প্রসারিত করতে বা আমাকে সঠিক দিকে ঠেলে দিতে কেউ কি আমাকে সহায়তা করতে পারে?

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

লোভী কাজ করে না: আমার কাছে একটি লোভী নির্বাচন অ্যালগরিদম রয়েছে যা নির্দিষ্ট জায়গায় যাওয়ার ব্যয় নির্ধারণ করে (যেমন আমরা ডানদিকে চলে যাই, আমরা বাম ব্যারেল থেকে দূরত্বগুলি দ্বিগুণ করি)।

আপনি কি একটি অগ্রণীত-প্রথম অনুসন্ধান করতে পারেন, একটি হিউরিস্টিক দিয়ে? হিউরিস্টিক বর্তমান সময়ের ভ্রমণের ব্যয়কে ব্যয় করা সময়ের সাথে একত্র করতে পারে।


সংক্ষিপ্ত পথ অ্যালগরিদম সম্পর্কে কীভাবে? ডিজকস্ট্রার অ্যালগরিদমের মতো?
সুরজ_ফালে

আমি চেষ্টা করেছিলাম, কিন্তু আমি মনে করি আমি সত্যিই কিছু ভুল করছি। আমি নীচের কাছে আমার অ্যালগরিদমকে (যা অগ্রাধিকারের প্রথম অনুসন্ধান বা বিএফএস) নাম্বারযুক্ত তালিকা সহ বর্ণনা করেছি।
ব্যারন ডব্লিউ

এই আপনি সাহায্য করতে পারে ... stackoverflow.com/q/14639346/585398
suraj_fale

দুঃখিত, আমি দেখতে পাচ্ছি না যে এই দুটি সমস্যা কীভাবে সম্পর্কিত। তুমি কি ব্যাখ্যা করতে পারো?
ব্যারন ডাব্লু।

2
এটি একটি এসিএম আইসিপিসি অনুশীলন সমস্যা, বাস্তব জীবনের সমস্যা নয়। অন্য একটি নোটে, আমি রাষ্ট্রকে হ্রাস করার চেষ্টা করেছি কিন্তু কোনও ফল হয় নি। আমি একটি ডিপি সলিউশন লেখার চেষ্টা করেছি কিন্তু এটিও কার্যকর হয়নি। রাজ্যটি ছিল এল, আর, পস।
ব্যারন ডাব্লু।

উত্তর:


4

আমি মনে করি আপনি জোড়া পজিশনের নির্দেশিত গ্রাফ হিসাবে সমস্যাটি দেখে এটি উন্নতি করতে পারেন।

এই উদাহরণের জন্য আমি -9, -6, -1, 3, এবং 5 এর সাথে রেখাটি ব্যবহার করব।

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

মানগুলি কেবল সেই দুটি পয়েন্ট + 1 এর বাইরে ব্যারেলের সংখ্যার দ্বারা গুণিত দুটি পয়েন্টের মধ্যকার দূরত্ব হিসাবে গণনা করা যেতে পারে । বিপরীতমুখী চিহ্নের সমস্ত ব্যারেল সংগ্রহ করা হয়ে গেলে উভয় সংখ্যায় একই চিহ্নযুক্ত কক্ষগুলি ক্ষেত্রে কেস উপস্থাপন করে। এগুলি শূন্য থেকে দূরে কেবল ব্যারেলের সংখ্যা ব্যবহার করে গণনা করা হয়।

এক্সের সারণির মানগুলির অর্থ হল যে আপনি সেই দিকে যেতে পারবেন না (সেই দিকের সমস্ত ব্যারেল নেওয়া হয়েছে)। সারিগুলি সংগ্রাহকের বর্তমান অবস্থানকে উপস্থাপন করে এবং কলামগুলি পরবর্তী বিপরীত ব্যারেলের অবস্থান উপস্থাপন করে।

    +------+------+------+------+------+
    |  -9  |  -6  |  -1  |   3  |   5  |
+---+------+------+------+------+------+
|-9 |      |      |      | X, 24| X, 14|
+---+------+------+------+------+------+
|-6 | 3, X |      |      | 9, 27| 6, 22|
+---+------+------+------+------+------+
|-1 |      |10, X |      |20, 8 |15, 18|
+---+------+------+------+------+------+
| 3 |24, 4 |27, 6 |16, 8 |      | X, 2 |
+---+------+------+------+------+------+
| 5 |14, X |22, X |18, X |      |      |
+---+------+------+------+------+------+

স্কোয়ারগুলির মধ্যে যাওয়ার জন্য নিয়মগুলি কিছুটা বিভ্রান্তিকর হতে পারে।

নেতিবাচক সংখ্যাযুক্ত কলামগুলির জন্য, নিয়মগুলি নীচে রয়েছে:

  • ডান দিকে যেতে একটি কক্ষের নীচে সরানো।
  • বাম দিকে যেতে একটি কক্ষের নীচে সরানো হয় এবং তার পরে তির্যক জুড়ে মিরর।
  • যদি ডান মান হয় X, বাম দিকে তির্যক দিকে চলে যায় (যেখানে কলাম এবং সারি সমান হয়) এবং এক এক করে বামে।

ইতিবাচক সংখ্যাযুক্ত কলামগুলির জন্য, নিয়মগুলি নীচে রয়েছে:

  • বাম দিকে যেতে একটি কক্ষের উপরে চলে যায়।
  • ডানদিকে যেতে একটি কক্ষকে উপরে নিয়ে যায় এবং তারপরে তির্যক জুড়ে আয়না।
  • বাম মানটি যদি X হয়, ডানদিকে যেতে তির্যককে নীচে সরানো হয় এবং একে একে ডানদিকে চলে যায়।

গ্রাফটি অতিক্রম করার জন্য এই চলন বিধিগুলি ব্যবহার করে এখন আমরা সেরা পাথ গণনা করার জন্য ডিজকস্ট্রার অ্যালগরিদম চালাতে পারি। আমাদের শুরুর অবস্থানগুলি যথাক্রমে 5 এবং 15 এর প্রাথমিক ব্যয় সহ (-1, 3) এবং (3, -1)। একবার আমরা দুটি শেষ পজিশনের জন্য মানগুলি গণনা করেছি ((-9, -9 এর বাম) এবং (5, 5) এর ডান) দু'টির চেয়ে ছোটটি আমাদের উত্তর।

প্রতিটি পদক্ষেপের চলমান সময় হ'ল:

  • প্রাথমিকভাবে লাইন বরাবর ইনপুট মানগুলি বাছাই করার জন্য ও (এন লগ এন)
  • টেবিল / গ্রাফ গণনা করার জন্য ও (এন ^ 2)
  • গ্রাশে ডিজকস্ট্রার চালনার জন্য ও (এন ^ 2 লগ এন) (দ্রষ্টব্য: প্রদত্ত কোনও শীর্ষবিন্দুর জন্য সর্বাধিক দুটি প্রান্ত রয়েছে)।

প্রথম দুটি পদক্ষেপ সর্বশেষের দ্বারা প্রাধান্য পায়, সুতরাং আপনার সামগ্রিক রানটাইম হ'ল O (N ^ 2 লগ এন) যা চ্যালেঞ্জের জন্য যথেষ্ট ভাল রানটাইম হওয়া উচিত।


1

স্বল্পতম দূরত্ব

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

মূলত, আমি যা করেছি তা এখানে।

  • কনটেইনার নম্বরগুলি একটি তালিকায় রাখুন <ইন্টিজার>
  • যদিও তালিকায় উপাদান রয়েছে;
    • সবচেয়ে নিকটতম উপাদান (গুলি) সন্ধান করুন
    • যদি একটি উপাদান থাকে তবে সেখানে হাঁটুন এবং উপাদানটি সরান।
    • যদি দুটি উপাদান থাকে তবে পাথটি অনুলিপি করুন এবং উভয় উপাদানে চলুন
  • ক্ষুদ্রতম বিকিরণের মান সহ পথটি সন্ধান করুন।

অ্যাপ্লিকেশন থেকে এখানে কিছু আউটপুট

10 containers are located at [-90, -75, -47, -9, 9, 26, 48, 50, 64, 79].

You walk to position -9 and pick up the container.  The total radiation emitted is 90 units.
You walk to position 9 and pick up the container.  The total radiation emitted is 252 units.
You walk to position 26 and pick up the container.  The total radiation emitted is 388 units.
You walk to position 48 and pick up the container.  The total radiation emitted is 542 units.
You walk to position 50 and pick up the container.  The total radiation emitted is 554 units.
You walk to position 64 and pick up the container.  The total radiation emitted is 624 units.
You walk to position 79 and pick up the container.  The total radiation emitted is 684 units.
You walk to position -47 and pick up the container.  The total radiation emitted is 1,062 units.
You walk to position -75 and pick up the container.  The total radiation emitted is 1,118 units.
You walk to position -90 and pick up the container.  The total radiation emitted is 1,133 units.

আমি কোনওভাবেই অ্যালগরিদমকে অনুকূলিত করি নি। আমি এমনকি লক্ষ করি না যে সংখ্যার ইনপুট তালিকাটি বাছাই করা হয়েছিল। (আমি একটি ডুফাস।)

যখন আমি সর্বাধিক মান, 1000 টি ধারক এবং 50000 থেকে 500,000 এর পরিসীমা নিয়ে আমার কোডটি চালিত করি, তখন আমার কোডটি কার্যকর করতে 3 সেকেন্ড সময় নিয়েছিল। বেশিরভাগ সময় কনসোলে 1,000 প্রিন্ট লাইন লিখছিলেন।

আমি কোনও বড় হে ব্যক্তি নই, তবে আমি মনে করি আমার সংক্ষিপ্ততম পথটি অ্যালগোরিদমের সবচেয়ে সংক্ষিপ্ত পথে হেঁটে হে (এন স্কোয়ারড), হে (এন!) নয়।

আমি যদি ইনপুট নম্বরগুলি বাছাই করা হয়ে থাকে এমন সুবিধাটি গ্রহণ করি, যাতে আমি বর্তমানে যেখানে অবস্থান করছি তার উভয় পাশেই কেবল দুটি নম্বর পরীক্ষা করতে হয়েছিল, আমি আবেদনটি ও (এন) এর কাছাকাছি পেয়ে যেতে পারি। আমাকে কেবল 2 টি সংখ্যা পরীক্ষা করতে হবে কারণ আমি তালিকা থেকে উপাদানগুলি যখনই পেয়েছি সেগুলি সরিয়ে ফেলছি।

আনুমানিক সমাধানের জন্য আপনি লোভী অ্যালগরিদমের মতো বিভিন্ন অ্যালগরিদম ব্যবহার করেছেন।

যদি আমার প্রোগ্রামটি 3 সেকেন্ডের পরিবর্তে চালাতে 3 ঘন্টা সময় নেয়, তবে আপনার পছন্দ করার পছন্দ ছিল।

ভাল যথেষ্ট সমাধান কি যথেষ্ট ভাল?

অন্য কথায়, আমি কি একটি ভাল যথেষ্ট উত্তরের জন্য প্রক্রিয়াকরণ গতি বাণিজ্য করতে ইচ্ছুক?

যদি একটি ভাল যথেষ্ট উত্তর যথেষ্ট ভাল হয়, তাহলে আপনি আনুমানিক আলগোরিদিম ব্যবহার।

আপনি যদি সঠিক উত্তরটি চান, আপনাকে সমস্ত ছোট্ট পথে চলতে হবে। কোনও শর্টকাট নেই।

কেউ যদি আমাকে আমার কোড পোস্ট করতে চান তবে আমি করব। আমি নিশ্চিত যে এখনও ত্রুটিগুলি রয়েছে, যেমন আমি দেখতে চেয়েছিলাম যে আমি একটি স্বল্পতম হাঁটার অ্যালগরিদম বাস্তবায়ন করতে পারি কিনা।


1

আমার একটি সমাধান আছে 2^Nযা সময়মতো এই সমস্যার সমাধান করবে , যা দরিদ্র, তবে আমি মনে করি এটি সমস্যাটি গঠনের একটি সহায়ক উপায়, তাই আমি ভেবেছিলাম আমি পোস্ট করব।

সমস্যাটিকে গ্রাফ হিসাবে মডেল করার পরিবর্তে আমি মডেল করব এটি একটি বাইনারি সিদ্ধান্ত গাছ (বলুন T)। প্রতিটি স্তরে আপনাকে ডান বা বাম দিকে যেতে বেছে নিতে হবে। প্রতিটি প্রান্তের 'ব্যয়' গণনা করা মোটামুটি সহজ। h(K)বর্তমান নোডের উচ্চতা হওয়া যাক K, তারপরে প্রান্তটির ব্যয়টি left_child(K) = h(K) x dist(K, left_child(K))। ডান সন্তানের প্রান্তের ব্যয়ের জন্য অনুরূপ গণনা যথেষ্ট। আপনি এই গাছটি তৈরি করেন, এবং সমস্ত দিকের কিনার সংযোজনীয় ব্যয়ের উপর নজর রাখুন এবং সর্বনিম্ন মোট ব্যয়ের সাথে পাতার নোডের পাথটি রিপোর্ট করুন।

নোট করুন যে ব্যয়ের গণনা কাজ করে কারণ প্রতিটি প্রান্তের দৈর্ঘ্য dist(K, left_child(K))পরবর্তী সাইটে যাওয়ার সময়কে উপস্থাপন করে, যখন সাবট্রির উচ্চতা বাকি সাইটের সংখ্যা (যেমন। এখনও রেডিয়েশন নির্গমন করে)।

এখন এই কাঠামোর মধ্যে কৌশলটি হ'ল এটি নির্ধারণ করা যে আপনি কিছু প্রমাণের জন্য 'প্রমাণ' করতে ব্যবহার করতে পারেন যা আপনি কিছু শাখা বরাবর অনুসন্ধানকে প্রসারিত করে উপেক্ষা করতে পারেন। আমার অন্তর্নিহিততা হ'ল এই জাতীয় কোনও তাত্ত্বিকতার জন্য সাইটগুলির একটি ব্যবস্থা রয়েছে যা এটি পরাজিত করবে, তবে সম্ভবত কেউ কিছু নিয়ে আসতে পারে।

বেশিরভাগ গ্রাফের জন্য সংক্ষিপ্ততম পাথ সমাধান প্রয়োগ করার প্রস্তাব দিয়েছে, এই জাতীয় সমাধান কাজ করতে পারে কিনা সে সম্পর্কে আমার কিছু সন্দেহ রয়েছে। সমস্যার 'গ্রাফ' এ থাকা আপনার প্রতিবেশীরা আপনার অনুসরণের পথের উপর নির্ভর করে পরিবর্তন করবে। আপনার আসল পোস্টে উদাহরণস্বরূপ [-12, -2, 3, 7]যদি আপনি যেতে -2তারপর -12এবং 3'প্রতিবেশীদের পরিণত এবং যদি আপনি ফিরে যেতে 3তারপর -2এবং 7প্রতিবেশী। ইতিবাচক এবং নেতিবাচক মানগুলির প্রতিটি সম্ভাব্য 'জোড়' চূড়ান্ত গ্রাফের মধ্যে সম্ভবত নেগ্রহাউস হতে পারে। আমি কোনও সংক্ষিপ্ত পথের অ্যালগরিদমগুলি জানি না যা একটি গতিশীল গ্রাফে যথাযথভাবে সঠিক।


0

আমি মনে করি প্রতিটি পর্বটি কেবলমাত্র নিকটতম পিপাতে ডান দিকে যাওয়া এবং নিকটতম ব্যারেলের বাম দিকে যাওয়ার মধ্যে বাইনারি পছন্দ হিসাবে কেবল প্রতিটি পর্যায়টি বিবেচনা করা সর্বাধিক উপলব্ধি করে। কেবলমাত্র একটি ব্যয় কার্যকারিতা রয়েছে যা তেজস্ক্রিয় ইউনিটগুলির সংখ্যার বিবরণ দেয় যে কোনও গতি তৈরি করে মোট ব্যয় হবে এবং সর্বনিম্ন ব্যয় সহ একটি বেছে নিন।

কেবল নিকটতম ব্যারেলটিকে বিবেচনা করবেন না, তবে পরিবর্তে ধরে নিন যে কোনও ব্যারেল থেকে সরে গিয়ে আপনি কার্যকরভাবে দ্বিগুণ বিকিরণ যুক্ত করছেন কারণ দূরে সরে যাওয়ার পরে আপনি সেই দিকটি পিছনে সরিয়ে নিয়ে যাওয়ার জন্য ব্যয়ও করেছেন।

আপনার [-12, -2,3,7] উদাহরণে, বাম দিকে সরানো বামদিকে মোট 14 (2 + 2 + 10) এবং ডানে 18 (2 + 2 + 5 + 9) হতে পারে, ডানদিকে চলতে ডানদিকে 10 (3 + 3 + 4) এবং ডানদিকে 26 (3 + 3 + 5 + 15) লাগবে। স্পষ্টতই বামদিকে প্রথমে সঠিক সমাধান। প্রতিটি ক্রমাগত আন্দোলনের জন্য একই রকম গণনা করা যেতে পারে।

এর পরে সমস্যাটি মূলত একটি অনুসন্ধানে হ্রাস পায়, তাই জটিলতাটি হ'ল (এনলগ (এন)) হওয়া উচিত যা ও (এন!) এর চেয়ে অনেক ভাল। আমি বিশ্বাস করি যে এই সমস্যাটির জন্য এটি অবশ্যই সর্বনিম্ন জটিলতা যেহেতু এটি মূলত তুলনা ভিত্তিক অনুসন্ধান অ্যালগরিদম যার জন্য এটি ও (এনলগ (এন)) এর চেয়ে ভাল করা সম্ভব নয় is

স্পষ্টতই আমি এই বিবরণ দিয়ে যথেষ্ট পরিষ্কার ছিল না, তাই আমি এটিকে আরও কিছুটা প্রোগ্রামমেটিক করে নেওয়ার সিদ্ধান্ত নিয়েছি: ১. বাম দিকে গিয়ে ব্যয় করা ব্যয় এবং বর্তমান অবস্থার উপর ভিত্তি করে ডানদিকে যাবার ব্যয় গণনা করুন ২ in সর্বনিম্ন ব্যয়বহুল দিক 3. একটি দিকের দিকে চলার ব্যয় গণনার ক্ষেত্রে বিবেচনা থেকে পৌঁছে যাওয়া ব্যারেলটি সরিয়ে ফেলুন

ব্যয়ের গণনা: 1. প্রদত্ত দিকের নিকটতম ব্যারেল সনাক্ত করুন। ধরা যাক $ ডিস্ট হ'ল বর্তমান অবস্থান থেকে প্রদত্ত দিকের নিকটতম ব্যারেলের দূরত্ব। 2. ব্যয়টি এন * $ ডিস্ট হিসাবে আরম্ভ করা হয়েছে যেখানে এন কেবল এখনও সক্রিয় ব্যারেল হিসাবে বিবেচনা করে। ৩. এটির জন্য, নতুন অবস্থানটি $ ডিস্ট দ্বারা নির্দেশিত দূরত্বটি প্রতিটি প্রতি ব্যারেল থেকে দূরে থাকবে।


1
এটি সবসময় কাজ করে না। হতে পারে আপনি কর্ডগুলি বাছাই করতে পারেন এবং তারপরে একটি অনুসন্ধান করতে পারেন যেখানে রাজ্যে কোনও পরিসর [i..j] থাকে (যা আপনি পরিদর্শন করেছেন কোন রেঞ্জটি দেখায়) এবং ব্যয় এবং বর্তমান সময়।
ব্যারন ডাব্লু।

কখন এটি কাজ করে না?
স্লেটার ভিক্টোরফ

একটি সাধারণ পরীক্ষার কেস ছিল যেখানে এটি ব্যর্থ হয়েছিল। আমি এটি সন্ধান করার চেষ্টা করব, তবে এটি এন = 4 বা 5 এর সাথে ছিল
ব্যারন ডব্লিউ

[43, -18, -98, -82, 63]
ব্যারন ডাব্লু।

এছাড়াও ক্ষেত্রে [-10,-11, 10,20,30,40,50,60,70]। সঠিক এবং একমাত্র সমাধান হ'ল সমস্ত নেতিবাচকগুলি সংগ্রহ করুন তারপরে ইতিবাচকগুলি সংগ্রহ করুন। 455 এর উত্তরের জন্য
ব্যারন ডব্লিউ

0

আংশিক সমাধান - আমি পরে এটিতে ফিরে আসব।

ধরুন, "ডিফল্ট" কৌশলটি বাম বা ডান দিক থেকে চালানো হয়েছে, যেটি সস্তা। এখন জিজ্ঞাসা করুন, একটি ব্যারেল তোলার জন্য অন্য উপায়ে কি একটু পার্শ্ব ভ্রমণ করা উচিত? উত্তরটি গণনা করা মোটামুটি সহজ।

আপনার জন্য নমুনা ইনপুট, পুরো পথটি চালানো বাম দিকের চেয়ে সস্তা। পার্শ্ব ভ্রমণের মূল্য কি -2 এ যাচ্ছে? এটি পুরো পথে চালনার ব্যয় হ্রাস করে এবং তারপরে 0 দ্বারা 14-এ ফিরে আসবে (কারণ আপনি ডিফল্ট স্ট্র্যাটেজিতে 0 থেকে 3 থেকে চলন্ত 4 রেডিয়েশন ইউনিটকে "প্রদান" করছিলেন, এখন এটি 3 এর নিচে নেমেছে, আপনি 3 থেকে 3 প্রদান করছিলেন) 7 এ, এখন এটি 2, ইত্যাদি), এবং আপনার চলন প্রতি ব্যয় প্রতি 0 দ্বারা কমিয়ে 2 -2 থেকে কমিয়ে দেয়, এভাবে মোট 16 টির জন্য আরও 2 টি সঞ্চয় করে।

যাইহোক, এটি নিখরচায় (১ 16-১)) = ২ এর জন্য ১ -২ এর পরে 0 এর 0-তে ফিরে যাবে (প্রতি পদক্ষেপে 4 ইউনিট -2 এ চলে যাবে, 0-এ ফিরে আসবে 3) cost নোট করুন যে এটি গণনা করার জন্য আপনাকে প্রতিটি সিদ্ধান্তের জন্য পুরো সমস্যাটি সমাধান করার সঠিক মূল্য নির্ধারণ করতে হবে না - আপনার সমস্ত সিদ্ধান্ত সঠিকভাবে চালানোর চেয়ে সমস্ত উপায় বামে চালানো সস্তা কিনা তা জেনে সিদ্ধান্ত নেওয়ার জন্য পর্যাপ্ত তথ্য রয়েছে plus অনেকগুলি বর্জ্য পাত্রে আপনার প্রতিটি পাশে রয়েছে এবং নিকটতম ২ এর দূরত্ব So সুতরাং এটি ও (এন ^ 2)।

একটি গুরুত্বপূর্ণ সমস্যা ব্যতীত - আমি ধরে নিয়েছি আপনি শেষ পর্যন্ত সমস্ত পথে চালাবেন এবং আমরা জানি আপনি ফিরে আসতে পারেন। এটি পরিষ্কার করতে, আমাদের আমার গণনা আপডেট করতে হবে। নমুনা ইনপুটটির জন্য, আমি ধরে নিয়েছি যে 0 থেকে 7 এবং পিছনে চলাকালীন প্রতি সেকেন্ডে 1 টি কম কম রেডিয়েশন নির্ধারণ করে আপনি 14 টি সঞ্চয় করবেন। তবে, আপনি যদি 7 এ যাওয়ার আগে দ্বিগুণ হয়ে যান, সঞ্চয় কমবে।

এটি বেশ খারাপ, কারণ, সমস্ত সম্ভাবনার চেষ্টা না করে পরের ডাবল-ব্যাক কীভাবে গণনা করতে হয় তা আমি জানি না, যা আমাদের ও (2 ^ N) এ ফিরে দেয়।

ব্যতীত - এটি ছাঁটাই সহ 2 ^ N। আমি গণনা করেছি যে "সাইড ট্রিপ" -2 এর দাম 14 হয়েছে, তবে আমি 16 টি অর্জন করেছি, যদি আমার সর্বাধিক সংখ্যায় পৌঁছানোর আগে আমার আরও সাইড ট্রিপ না থাকে। যদি সঠিকতম সংখ্যাটি 5 হয়, আমি অবিলম্বে জানতাম পার্শ্ব ভ্রমণটি -2 এ প্রদেয় মূল্য দিতে পারছে না। (ব্যয় এখনও 14, সর্বোচ্চ সুবিধা 12)। আমি -২ এ যাওয়ার পরে side-এ পৌঁছানোর আগে পার্শ্ব ভ্রমণের কথাও বিবেচনা করব না, যেহেতু এটি সর্বদা প্রথম স্থানে সরাসরি that পয়েন্টে যাওয়ার চেয়ে নিকৃষ্ট।


0

আমি মনে করি আপনি প্রসারিত প্রথম অনুসন্ধানটি ব্যবহার করে সমাধান করতে পারবেন, 2 * এন ^ 2 টি (বুলিয়ান, ইনট, ইনট, ইনট, স্ট্রিং) এর চেয়ে বেশি টিপল বজায় রাখতে হবে যেখানে পাথ যতটা জটিল is

টিপলগুলি হ'ল (সর্বনিম্ন বা সর্বোচ্চ বুলিয়ান, ন্যূনতম অবস্থান ভ্রমণ, সর্বাধিক অবস্থান ভ্রমণ, মোট বিকিরণ নির্গত, পথের ইতিহাস) history

আমি অ্যালগরিদমটি এভাবে চলতে দেখছি:

  1. একক প্রবেশে টিপলসটির পুলটি শুরু করুন, (মিনিট, 0, 0, 0, "")
  2. পুলটিতে এমন একটি উপাদান সন্ধান করুন যাতে নূন্যতম বিকিরণ নির্গত হয়। যদি সর্বনিম্ন এবং সর্বোচ্চটি সমস্ত ব্যারেলের নূন্যতম এবং সর্বাধিকের সাথে মিলে যায় তবে পথের ইতিহাসটি সর্বোত্তম সমাধান। অন্যথায় এটি পুল থেকে মুছুন।
  3. এই টিউপলের 2 জন বংশধর গণনা করুন, যার প্রতিটি বাম বা ডান পাশের অপস্রোসিত ব্যারেলের সাথে সমান।
  4. বংশধরদের পুলে .োকান। যদি পুলটিতে ইতিমধ্যে একই বুলিয়ান, মিনিট এবং নতুন বংশধর হিসাবে সর্বাধিক উপাদান থাকে তবে উচ্চতর বিকিরণ গণনা সহ উপাদানটি বাতিল করুন।
  5. গোটো 2।

আধিপত্যযুক্ত টিপলগুলি সন্ধান এবং অপসারণ নাটকীয়ভাবে কর্মক্ষমতা উন্নত করবে। প্রতিটি টিপলে একটি 'ব্রেড ব্রেড' পতাকা যুক্ত করা ভাল হবে এবং পুলে ব্রিড টিপলস রেখে যাওয়া সার্থক হবে।

টিপলগুলি কীভাবে সংরক্ষণ করবেন সে সিদ্ধান্ত নেওয়ার ক্ষেত্রেও কয়েকটি উল্লেখযোগ্য সিদ্ধান্ত নেওয়া উচিত এবং তাদের আধিপত্য এবং জাতের জন্য নতুন উপাদানগুলির সন্ধান করুন।

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