ফ্লোর অর্ডারের ভ্রমণের সবচেয়ে সংক্ষিপ্ত পথটি খুঁজতে লিফটরা কোন অ্যালগরিদম ব্যবহার করেন?


27

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

এই মুহুর্তে আমি একটি খুব সাধারণ এবং "স্বল্প দৃষ্টিশক্তি" যুক্তিটি ব্যবহার করছি যা বর্তমান মেঝেটির জন্য আমার নিকটতম তলটি খুঁজে পেতে এবং এটিকে আমার পরবর্তী গন্তব্য হিসাবে সেট করে এবং তালিকায় আর কোনও ততক্ষণ না আসা অবধি লুপটি রাখি।

তবে এটি সর্বদা কার্যকর হয় না, উদাহরণস্বরূপ, লিফটটি 5 তলা ভবনের তৃতীয় তলায় ছিল এবং অর্ডার পেয়েছিল 4,5,2 সংক্ষিপ্ত পথটি 2-> 4-> 5 হবে যার জন্য 4 তলা খরচ হয় তবে এই যুক্তিটি ব্যবহার করে 4-> 5-> 2 যার কোড 5 অনুসারে 5 ব্যয় করা বাছাইয়ের একই সুযোগ রয়েছে।

আমি কীভাবে সবচেয়ে সংক্ষিপ্ত পথটি আবিষ্কার করব এবং লিফটকে আরও দক্ষ করে তুলব?



6
আমি আপনাকে আমার অফিসে আমন্ত্রণ জানাতে চাই এবং সেখানে লিফটগুলি যে অ্যালগরিদমটি ব্যবহার করে তা খুঁজে বের করতে চাই। কারণ আমি একেবারে পারি না।
gnasher729

1
@ gnasher729 ওহ, আমি আপনাকে জানতাম না এমনকী আমি করতে পারি, কারণ এটি অবশ্যই আমার অফিসের মতো: আপনি যে মেঝেতে রয়েছেন সেখানে কখনও থামবেন না, যখনই লোকেরা পূর্বে পূর্ণ হয় except আমি কি সঠিক?
অ্যান্ড্রেস এফ।

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

2
প্রাসঙ্গিক প্রোগ্রামিং গেম / চ্যালেঞ্জ: play.elevatorsaga.com
dwikle

উত্তর:


30

"দক্ষতা" সর্বাধিক গুরুত্বপূর্ণ বৈশিষ্ট্য নয়, সবচেয়ে গুরুত্বপূর্ণ হ'ল প্রতিটি আদেশ অনুসরণ করা হয় তা নিশ্চিত করা, কোনও অনাহার নেই is যদি কেউ 100 টি চাপেন এবং লোকেরা 1 এবং 2 টিপতে থাকে তবে এই তলগুলির মধ্যে চলতে রাখা দক্ষ হতে পারে তবে 100 টির জন্য কোনও এক সময় দেখার জন্য ভাল লাগবে।

আমি মনে করি (ব্যক্তিগত পর্যবেক্ষণ থেকে যখন আমি সন্ধানের জন্য আগ্রহী ছিলাম) যা তাদের বেশিরভাগই করেন:

  1. চাপা প্রথম বোতামটির দিকে যেতে শুরু করুন, আমরা কোন দিকে যাচ্ছি তা ট্র্যাক করুন
  2. যখন কোনও তল পৌঁছে যায় এবং সেই বোতামটি টিপানো হয়, থামুন এবং দরজাগুলি খুলুন, এই মেঝেটির জন্য বোতামগুলি আর চাপানো হয়নি হিসাবে চিহ্নিত করুন।
    • যদি আমাদের আরও একই ফ্লোর থাকে তবে আমাদের একই দিকের দিকে যেতে হবে তবে সেদিকেই চলতে থাকুন
    • যদি না হয় এবং এখনও তলগুলি রয়েছে যেখানে আমাদের যেতে হবে, সেই দিকে এগিয়ে যান।
    • যদি না হয় তবে আমরা শেষ করেছি এবং 1 এ শুরু হবে যখন আবার একটি বোতাম টিপবে pres

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

আপনাকে কখনই পুরো পথটি বের করতে হবে না , কেবল কোন দিকে যেতে হবে।


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

7
নোট করুন যে একবার আপনি 100 তলা বিশিষ্ট একটি বিল্ডিং এ উঠলে আপনার সাধারণত লিফট থাকবে কেবলমাত্র নির্দিষ্ট মাত্রার মেঝেতে পরিবেশন করা (যেমন 0-19, 20-39,…), পাশাপাশি এক্সপ্রেস লিফটগুলি কেবল দীর্ঘ দূরত্বে (যেমন 0 50, 0 থেকে 100, 50 থেকে 100, কিন্তু এর মধ্যে কোনও মেঝে নেই), যাতে আপনার গন্তব্যে পৌঁছতে আপনাকে লিফট পরিবর্তন করতে হতে পারে। আপনার প্রতি শ্যাফটে একাধিক লিফট থাকতে পারে যা স্পষ্টতই একে অপরকে পাস করতে পারে না। সামগ্রিকভাবে অফ-টপিক: আইআইআরসি, ব্যবহারকারীর অভিজ্ঞতার সাইটে যেগুলি উপরে এবং নীচে তীর বোতামগুলির দক্ষতা সম্পর্কে একটি প্রশ্ন ছিল যা খুব আকর্ষণীয় পড়ার জন্য তৈরি করেছিল।
Jörg ডব্লু মিটাগ

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

কেবলমাত্র অন্য একটি জিনিসই আমি যুক্ত করব যে প্রায়শই তাদের একটি 'হোম' ফ্লোর থাকে যা তারা ব্যবহার না করা অবস্থায় ফিরে আসবে, এটি বিভিন্ন লিফটগুলির জন্য পৃথক হতে পারে এবং সম্ভবত দিনের এবং প্রত্যাশিত ব্যবহারের ধরণগুলির উপর নির্ভর করে পরিবর্তিত হতে পারে
জে কে ।

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

13

অন্য উত্তরটি সঠিকভাবে স্ট্যান্ডার্ড লিফট অ্যালগরিদম দেয় যা মূলত "যতদূর সম্ভব একই দিকে চলতে হবে এবং পথে প্রয়োজনীয় প্রতিটি স্টপ তৈরি করে"।

অন্যান্য লিফট অ্যালগরিদম রয়েছে। উদাহরণস্বরূপ, একটি অ্যাপার্টমেন্ট বিল্ডিং বিবেচনা করুন যেখানে অ্যাপার্টমেন্টগুলি আপনি উপরে যাওয়ার সাথে সাথে আরও ব্যয়বহুল হয়। বিল্ডিংয়ের মালিকরা লিফট অ্যালগরিদমকে "যতদূর সম্ভব একই দিকে যেতে তবে কেবল নীচের পথে থামতে" বেছে নিতে বেছে নিতে পারেন। এইভাবে যদি আপনার লিফটে এমন লোক থাকে যাঁরা লবিতে থাকেন এবং 2, 5 এবং 10 এ চলে যান তবে লিফটটি 10 ​​তে যায়, তারপরে 5, তারপরে 2, লোকেরা তাকে কত ভাড়া দেয় তার ক্রম ছাড়বে। তবে অবশ্যই যখন 10-এর লোকেরা তাদের অ্যাপার্টমেন্টটি ছেড়ে যায়, তাদের প্রায়শই লবিতে যাওয়ার জন্য আরও অপেক্ষা করতে হবে।

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


1
এটি বিরল বলে মনে হচ্ছে (অন্যান্য অলোগर्थ্মগুলি)
FindOutIslamNow

10

নোট করুন যে লিফট কিছু হার্ড ড্রাইভ নিয়ামক হিসাবে একই সময়সূচী অ্যালগরিদম ব্যবহার করে। স্ট্যান্ডার্ড স্ক্যান অ্যালগরিদম এমনকি লিফট অ্যালগরিদম হিসাবে পরিচিত । আমি মনে করি অভ্যাস LOOK অ্যালগরিদম বেশি দেখা যায় যেমন স্ক্যানের চেয়ে সামান্য বেশি কার্যকরী।


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