কোন মানচিত্রে বিন্দু A থেকে পয়েন্ট বি পর্যন্ত কোন অ্যালগরিদমগুলি গণনা করে?


542

মানচিত্র সরবরাহকারীরা (যেমন গুগল বা ইয়াহু ম্যাপস) দিকনির্দেশগুলি কীভাবে পরামর্শ দেয়?

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

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

বাস্তবে কোন অ্যালগরিদম ব্যবহার করা হয়?

পুনশ্চ. এই প্রশ্নটি অনলাইন ম্যাপিংয়ের দিকনির্দেশগুলিতে স্ফূণতা সন্ধান করে অনুপ্রাণিত হয়েছিল। ত্রিভুজ বৈষম্যের বিপরীতে, কখনও কখনও গুগল ম্যাপস মনে করে যে এক্সজেড বেশী সময় লাগে এবং হিসাবে কোন মধ্যবর্তী বিন্দু ব্যবহার না করে অধিকতর হয় XYZ । তবে তাদের চলার দিকনির্দেশগুলি অন্য প্যারামিটারের জন্যও অনুকূলিত হয়েছে?

PPS। এখানে ত্রিভুজ বৈষম্যের আরও একটি লঙ্ঘন যা আমাকে বোঝায় যে (তারা আমার কাছে) যে তারা একরকম টাইার্ড পদ্ধতির ব্যবহার করে: এক্সজেড বনাম এক্সওয়াইজেড । প্রাক্তনটি সম্ভবত কিছুটা দূরে সত্ত্বেও বিশিষ্ট বুলেভার্ড ডি সেবাস্তপল ব্যবহার করবেন বলে মনে হয়।

সম্পাদনা : এই উদাহরণগুলির কোনওটিই আর কাজ করে না বলে মনে হয়, তবে দু'টিই মূল পোস্টের সময়ে করেছিল।


3
বিটিডাব্লু, দি * অ্যালগোরিদম হ'ল ডিজকস্ট্রার অ্যালগোরিদমের একটি সাধারণীকরণ যা অনুচ্ছেদটির আকারকে হ্রাস করে যা অন্বেষণ করা উচিত, যদি অতিরিক্ত তথ্য পাওয়া যায় যা লক্ষ্যমাত্রার "দূরত্ব" এর নীচে একটি সীমানা সরবরাহ করে
মিচ হুইট

রে এ *: হ্যাঁ, সত্যিই। ভাগ্যক্রমে, আমাদের ক্ষেত্রে, এই "অতিরিক্ত তথ্য" সরলরেখার দূরত্ব ব্যবহার করে উদাহরণস্বরূপ উপলব্ধ। আমি যখন উপরে "ডিজকস্ট্রা" বলি, তখন আমার অর্থ ভ্যানিলা ডিজকস্ট্রা।
এ। রেক্স

চলার দিকনির্দেশ? ডান্নো অন্য কোথাও, তবে এখানের কাছাকাছি (হ্যাম্পশায়ার, যুক্তরাজ্য), বড় জি এর কোনও পথচারীর ডেটা নেই - এটি আমাকে পথচারীদের সীমান্তের চারপাশে রাস্তাগুলি ঘুরিয়ে দেয় etc. ইত্যাদি পথের জন্য নেওয়া সময়ের অনুমান পরিবর্তন করা কেবলমাত্র এটিই ভাল :)
jTresidder

দিকনির্দেশগুলি ড্রাইভিং বা হাঁটার জন্য কিনা তা আমি বিশেষভাবে যত্ন করি না। আমি কেবল তারা কীভাবে কাজ করে তা জানতে চাই! আমার সেখানে ওঠার লিঙ্কগুলির কারণ হ'ল আমি প্যারিসের চারদিকে ঘুরে বেড়াতে এবং সমস্ত 66 Wal টি ওয়ালেসের ঝর্ণা দেখার জন্য একটি গণনা করছিলাম। (এই মানচিত্রের শেষ পয়েন্টগুলি ওয়ালেসের ঝর্ণা হওয়া উচিত))
এ। রেক্স

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

উত্তর:


525

এমন এক ব্যক্তির সাথে কথা বলা যিনি ম্যাপিং সংস্থায় ১৮ মাস অতিবাহিত করেছেন, যার মধ্যে রাউটিং অ্যালগরিদম নিয়ে কাজ করা রয়েছে ... হ্যাঁ, ডিজকস্ট্রার বেশ কয়েকটি পরিবর্তন সহ কাজ করে:

  • পরিবর্তে ডিজকস্ট্রা করারউত্স থেকে নিয়মে একবার আপনি প্রতিটি প্রান্তে শুরু করুন এবং উভয় পক্ষের মাঝখানে মিলিত হওয়া অবধি প্রসারিত করুন। এটি প্রায় অর্ধেক কাজ (2 * পাই * (আর / 2) vs 2 বনাম পাই * আর ^ 2) সরিয়ে দেয়।
  • আপনার উত্স এবং গন্তব্যের মধ্যে প্রতিটি শহরের ব্যাক-এলিগুলি অন্বেষণ এড়াতে আপনার মানচিত্রের ডেটাতে কয়েকটি স্তর থাকতে পারে: একটি 'হাইওয়েস' স্তর রয়েছে যার মধ্যে কেবলমাত্র মহাসড়ক রয়েছে, একটি 'মাধ্যমিক' স্তর রয়েছে যাতে কেবলমাত্র গৌণ রাস্তাগুলি রয়েছে এবং আরও অনেক কিছু। তারপরে, আপনি আরও বিস্তারিত স্তরগুলির কেবলমাত্র ছোট বিভাগগুলি অন্বেষণ করুন, প্রয়োজনীয় হিসাবে প্রসারণ করা। স্পষ্টতই এই বিবরণটি প্রচুর বিবরণ ছেড়ে দেয় তবে আপনি ধারণাটি পাবেন get

এই রেখাগুলি সংশোধন করে, আপনি এমনকি খুব যুক্তিসঙ্গত সময়সীমার মধ্যে ক্রস-কান্ট্রি রুটিংও করতে পারেন।


29
সত্যিকারের বিশ্বে কেউ এই নিয়ে কাজ করেছেন, দুর্দান্ত! গুগল সম্পর্কে অন্য একটি মন্তব্যে উল্লিখিত নিবন্ধের মতো, পূর্ববর্তী করা কতটা সম্ভব আপনার কোনও ধারণা আছে?
এ। রেক্স

10
আমরা সেই প্রকৃতির কোনও প্রিপ্রোসেসিং করিনি, তবে এটি অবশ্যই একটি আকর্ষণীয় অপ্টিমাইজেশনের মতো বলে মনে হচ্ছে।
নিক জনসন

29
"এটি কেবলমাত্র সমাধান সরবরাহের গ্যারান্টিযুক্ত, অগত্যা সবচেয়ে দক্ষ একটি" এটি অসত্য; যতক্ষণ ব্যবহৃত ব্যবহৃত হিউরিস্টিকটি গ্রহণযোগ্য হয় ততক্ষণ এ * অ্যালগোরিদম সর্বনিম্ন ব্যয়ের পথ তৈরি করে। স্বীকৃত মানে হ'ল ব্যয়টি কখনই অতিরিক্ত-অনুমান হয় না তবে এটি অনুমান করা যায় (তবে দরিদ্র অনুমানগুলি অ্যালগোরিদমকে ধীর করবে)। প্রাক-প্রক্রিয়াকরণ থেকে ডেটা ব্যবহার করা আরও ভাল গ্রহণযোগ্য হিউরিস্টিক তৈরিতে সহায়তা করতে পারে এবং তাই এ * কাজের দ্রুততর করে তোলে।
a1kmm

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

11
এ *, সবচেয়ে খারাপ ক্ষেত্রে (এমন এক তাত্ত্বিক যা বলে যে সমস্ত পাথ সমান), জিক্সট্রার সাথে ঠিক সমান।
টর্ডেক

111

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

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

ইঞ্জিনিয়ারিং ফাস্ট রুট প্ল্যানিং অ্যালগরিদম নিবন্ধটি সেই ক্ষেত্রে গবেষণার অগ্রগতির একটি ওভারভিউ দেয়। আরও তথ্যের জন্য সেই কাগজের উল্লেখগুলি দেখুন See

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

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

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


1
আলোকিত, সত্যই। আপনি যে নতুন পদ্ধতির কথা উল্লেখ করছেন তা কী কী?
টমাস পাজোনক

1
বিশেষ সংকোচনে হায়ারারচি। আপনি এটি সম্পর্কে এখানে আরও জানতে পারেন: algo2.iti.kit.edu/routeplanning.php । এটি সম্পর্কে একটি গুগল প্রযুক্তিগত কথাও রয়েছে: youtube.com/watch?v=-0ErpE8tQbw
সেবাস্তিয়ানক

19

কেবল ত্রিভুজ বৈষম্য লঙ্ঘনকেই সম্বোধন করা, আশা করি তারা যে অতিরিক্ত ফ্যাক্টরটির জন্য অনুকূল করছেন তারা সাধারণ জ্ঞান common আপনি অল্প অল্পতম বা দ্রুততম রুটটি অগত্যা চান না কারণ এটি বিশৃঙ্খলা সৃষ্টি করতে পারে এবং and ধ্বংস । যদি আপনি চান যে আপনার দিকনির্দেশগুলি প্রধান-রুটগুলি ট্রাক-বান্ধব এবং যে কোনও সাত-নেভ-অনুসরণকারী ড্রাইভার তাদের নামিয়ে দেওয়া মোকাবেলা করতে পছন্দ করে, আপনি দ্রুত ত্রিভুজ বৈষম্য [1] বাদ দিন।

যদি Y এবং X এবং Z এর মধ্যে সংকীর্ণ আবাসিক রাস্তা হয়, আপনি সম্ভবত Y এর মাধ্যমে শর্টকাট ব্যবহার করতে চান যদি ব্যবহারকারী স্পষ্টভাবে XYZ জিজ্ঞাসা করে। যদি তারা এক্সজেডের জন্য জিজ্ঞাসা করে তবে কিছুটা এগিয়ে গেলে এবং আরও খানিকটা সময় নেয় এমনকি তাদের বড় রাস্তাগুলিতে আটকে থাকা উচিত। এটি ব্রাসের প্যারাডক্সের মতো - যদি প্রত্যেকে সবচেয়ে সংক্ষিপ্ততম, দ্রুততম রুটটি চেষ্টা করে, ফলস্বরূপ জনাকীর্ণ হওয়ার অর্থ হ'ল এটি আর কারও পক্ষে দ্রুততম রুট নয়। এখান থেকে আমরা গ্রাফ তত্ত্ব থেকে গেম থিওরিতে ভ্রমন করি।

[1] বাস্তবে, গাণিতিক অর্থে যে দূরত্ব তৈরি হয়েছিল তা কোনও দূরত্বের কার্যকারিতা বলে আশাবাদী, যখন আপনি একমুখী রাস্তাগুলি মঞ্জুরি দেবেন এবং প্রতিসম প্রয়োজনীয়তা হারাবেন। ত্রিভুজ বৈষম্য হারাতে কেবল ক্ষতস্থানে নুন মাখানো।


14

এখানে বিশ্বের দ্রুততম রাউটিং অ্যালগরিদমগুলির তুলনা করা হয়েছে এবং যথার্থতার জন্য প্রমাণিত হয়েছে:

http://algo2.iti.uka.de/schultes/hwy/schultes_diss.pdf

এই বিষয়টিতে এখানে গুগল প্রযুক্তি বিষয়ক আলোচনা রয়েছে:

http://www.youtube.com/watch?v=-0ErpE8tQbw

এখানে হাইওয়ে-হায়ারার্কিজ অ্যালগরিদমের বাস্তবায়ন এখানে স্কুলেটস দ্বারা আলোচিত হিসাবে বলা হয়েছে (বর্তমানে কেবল বার্লিনে, আমি ইন্টারফেসটি লিখছি এবং একটি মোবাইল সংস্করণও বিকাশ করা হচ্ছে):

http://tom.mapsforge.org/


9

আমি এর আগে গুগল বা মাইক্রোসফ্ট বা ইয়াহু মানচিত্রে কাজ করি নি, সুতরাং তারা কীভাবে কাজ করে তা আমি আপনাকে বলতে পারি না।

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

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

এই কৌশলটি আরও জানতে আপনি এসিও বা টিএসপি গুগল করতে পারেন। আমি এর জন্য ওপেন-সোর্স এআই সরঞ্জামগুলির কোনও ব্যবহার করি নি, সুতরাং কোনওটি প্রস্তাব করতে পারে না (যদিও আমি শুনেছি যে স্বওয়ারম বেশ বিস্তৃত ছিল)।


4
রাউটিং! = tsp tsp এ আপনি সমস্ত দূরত্ব জানেন এবং আপনি স্টপ অর্ডারটিকে অনুকূলিত করেন - এটি বিন্দু বিন্দু নয়।
কারসেল

8

ডিজকস্ট্রার অ্যালগোরিদমের মতো গ্রাফ অ্যালগরিদমগুলি গ্রাফটি প্রচুর হওয়ায় কাজ করবে না।

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

Djkstra আসলে ভাল আচরণ করা গ্রাফের জন্য বরং আরও ভাল পারফরম্যান্স করতে পারে। অন্যদিকে, সাবধানী প্যারামিট্রাইজেশন সহ এ * সর্বদা ঠিক যেমন ভাল, বা তত ভাল অভিনয় করবে। আপনি ইতিমধ্যে চেষ্টা করেছেন কীভাবে এটি আপনার ডেটাতে সঞ্চালন করবে?

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


2
ধরুন আপনি বিন্দু A থেকে B পর্যন্ত দিকনির্দেশ অনুসন্ধান করার চেষ্টা করছেন, যার জন্য অনুকূলतम দূরত্ব d। Djkstra এর অ্যালগরিদম খুব কমপক্ষে, এ থেকে সর্বাধিক d এর দূরত্বে সমস্ত পয়েন্টগুলি পরীক্ষা করবে যদি A সান ফ্রান্সিসকো এবং বি বোস্টন হয়, এর অর্থ এটি মার্কিন যুক্তরাষ্ট্রের বেশিরভাগ অংশে পরীক্ষা করে। N'est-ce pas?
এ। রেক্স

2
হ্যাঁ, তাই আমি যেটি পেতে চাইছিলাম তা হ'ল পরিবর্তে এ * ব্যবহার করা যায় এবং এটি সর্বদা একটি অনুকূল সমাধান খুঁজে পায় (যদিও এটি হিউরিস্টিক ব্যবহার করে)!
কনরাড রুডল্ফ

হ্যা অবশ্যই. আমি আমার আসল পোস্টটি লেখার পরে, আমি ব্যবহৃত "হিউরিস্টিক" শব্দটি সম্পর্কে ভেবেছিলাম। এটি এখানে কিছুটা অসম্পূর্ণ, কারণ এটি একটি অনুকূল সমাধান খুঁজে পায়।
এ। রেক্স

2
ওয়েল, বিন্দু যে A * হয় ব্যবহার (যেমন বিরোধিতা একটি অনুসন্ধানমূলক প্রক্রিয়া হচ্ছে একটি) পরবর্তী ধাপে নির্ধারণ। এই এক সিদ্ধান্ত প্রকৃতপক্ষে suboptimal হতে পারে। তবে এটি কেবল রানটাইমকে প্রভাবিত করে, ফলাফলটি নয়, কারণ এটি কেবল নির্ধারণ করে যে ডিজিট্রের চেয়ে কতটা ভাল।
কনরাড রুডলফ

8

স্ট্যাটিক রোড নেটওয়ার্কগুলির ক্যোয়ারী সময়ের ক্ষেত্রে শিল্পের বর্তমান অবস্থা হ'ল আব্রাহাম এট আল দ্বারা প্রস্তাবিত হাব লেবেলিং অ্যালগরিদম। http://link.springer.com/chapter/10.1007/978-3-642-20662-7_20 । ক্ষেত্রটির একটি মাধ্যমে এবং দুর্দান্তভাবে লিখিত সমীক্ষাটি সম্প্রতি মাইক্রোসফ্টের প্রযুক্তিগত প্রতিবেদন হিসাবে প্রকাশিত হয়েছিল http://research.microsoft.com/pubs/207102/MSR-TR-2014-4.pdf

সংক্ষিপ্ত সংস্করণটি হ'ল ...

হাব লেবেলিং অ্যালগরিদম স্ট্যাটিক রোড নেটওয়ার্কগুলির জন্য দ্রুততম কোয়েরি সরবরাহ করে তবে প্রচুর পরিমাণে র‌্যাম চালানোর প্রয়োজন হয় (18 জিআইবি)।

ট্রানজিট নোড রুটিংটি কিছুটা ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে হলেও এটির জন্য প্রায় 2 জিবিবি মেমরি প্রয়োজন এবং দ্রুত প্রিপ্রোসেসিং সময় রয়েছে।

সংকোচনের হায়ারারচিগুলি দ্রুত প্রাক প্রসেসিং সময়, কম স্থানের প্রয়োজনীয়তা (0.4 জিআইবি) এবং দ্রুত জিজ্ঞাসা সময়ের মধ্যে একটি দুর্দান্ত বাণিজ্য সরবরাহ করে।

কোনও একটি অ্যালগরিদম পুরোপুরি আধিপত্য নয় ...

পিটার স্যান্ডার্সের গুগলের এই প্রযুক্তিগত আলোচনাটি আগ্রহী হতে পারে

https://www.youtube.com/watch?v=-0ErpE8tQbw

এছাড়াও এন্ড্রু গোল্ডবার্গের এই আলোচনা

https://www.youtube.com/watch?v=WPrkc78XLhw

সংকোচনের শ্রেণিবিন্যাসের একটি ওপেন সোর্স বাস্তবায়ন পিআইটি স্যান্ডার্স গবেষণা দলের ওয়েবসাইট কেআইটি থেকে উপলব্ধ। http://algo2.iti.kit.edu/english/routeplanning.php

এছাড়াও একটি সহজে প্রবেশযোগ্য ব্লগ পোস্টে সিআরপি অ্যালগরিদম ... সেখানে ব্যবহারের উপর মাইক্রোসফট দ্বারা লিখিত http://blogs.bing.com/maps/2012/01/05/bing-maps-new-routing-engine/


7

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


6

আমি এটি বেশ কয়েকবার করেছি, আসলে, বেশ কয়েকটি বিভিন্ন পদ্ধতি ব্যবহার করে। মানচিত্রের আকারের (ভৌগলিক) উপর নির্ভর করে আপনি হেরসাইন ফাংশনকে হিউরিস্টিক হিসাবে বিবেচনা করতে চাইতে পারেন।

আমি তৈরি করা সেরা সমাধানটি হ'ল হিউরিস্টিক ফাংশন হিসাবে স্ট্রেইট লাইনের দূরত্ব সহ এ * ব্যবহার করা। তবে তারপরে আপনাকে মানচিত্রে প্রতিটি বিন্দুর (ছেদ বা ভার্টেক্স) জন্য কিছু ধরণের স্থানাঙ্কের প্রয়োজন। হিউরিস্টিক ফাংশনের জন্য আপনি পৃথক ওজনও চেষ্টা করতে পারেন, যেমন

f(n) = k*h(n) + g(n)

যেখানে k 0 থেকে কিছুটা ধ্রুবক।


4

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


3

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

এটি একটি গুগল অ্যাপ্লিকেশন হিসাবে দেওয়া, এটি ধরে নেওয়াও যুক্তিসঙ্গত যে বিস্তৃত ক্যাচিংয়ের মাধ্যমে প্রচুর যাদু করা হয়েছে। :) শীর্ষস্থানীয় 5% সর্বাধিক সাধারণ Google মানচিত্রের রুট অনুরোধগুলির কোনও বৃহত অংশের (20%? 50%?) অনুরোধের সরল চেহারাতে উত্তর দেওয়ার জন্য অনুমতি দিলে আমি অবাক হব না।


আপনার কাছে "প্রভাবের মানচিত্রের ডেটা স্ট্রাকচার" এর জন্য কোনও ভাল রেফারেন্স রয়েছে? ধন্যবাদ!
এ। রেক্স

3

এ সম্পর্কে আমার আরও কিছু চিন্তাভাবনা ছিল:

1) মনে রাখবেন যে মানচিত্রগুলি একটি শারীরিক সংস্থার প্রতিনিধিত্ব করে। প্রতিটি ছেদ অক্ষাংশ / দ্রাঘিমাংশ সংরক্ষণ করুন। আপনার লক্ষ্যটির দিকে যে পয়েন্ট রয়েছে তার বাইরে আপনার খুব বেশি পরীক্ষা করার দরকার নেই। আপনি যদি নিজেকে অবরুদ্ধ দেখতে পান তবেই আপনাকে এর বাইরে যেতে হবে। আপনি যদি উচ্চতর সংযোগগুলির ওভারলে সঞ্চয় করে থাকেন তবে আপনি এটিকে আরও সীমাবদ্ধ করতে পারেন - আপনি সাধারণত আপনার চূড়ান্ত গন্তব্য থেকে দূরে চলে এমন পথে কখনও যেতে পারবেন না।

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

নোট করুন জোনগুলি একটি মহানগর অঞ্চলের চেয়ে ছোট হতে পারে। ভূখণ্ডের বৈশিষ্ট্যযুক্ত যে কোনও শহর এটিকে ভাগ করে দেয় (বলুন, একটি নদী) একাধিক অঞ্চল হবে।


3

ব্যবহৃত হিউরিস্টিক্স সম্পর্কে আমি খুব কৌতূহল ছিলাম, যখন কিছুক্ষণ আগে আমরা সান্তা রোজার কাছাকাছি একই সূচনা অবস্থান থেকে ইয়োসেমাইট জাতীয় উদ্যানের দুটি পৃথক শিবিরের মাঠে যাত্রা শুরু করি। এই পৃথক গন্তব্যগুলি বেশ কয়েকটি পৃথক রুট তৈরি করেছিল (আই -580 বা সিএ -12 হয়ে) উভয় রুট শেষ 100 মাইল (সিএ-120 বরাবর) একসাথে কয়েক মাইল অবধি আবার ডাইভার্জ করার আগে রূপান্তরিত করে। এটি বেশ পুনরাবৃত্তিযোগ্য ছিল। দুটি রুট প্রায় 100 মাইল দূরে 50 মাইল দূরে ছিল, তবে দূরত্বগুলি / সময়গুলি একে অপরের সাথে খুব কাছাকাছি ছিল যেমনটি আপনি আশা করেছিলেন।

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


3

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

আমি এখানে দ্বি নির্দেশমূলক ডিজকস্ট্রার সাথে একটি সত্যিকারের পথ অনুসন্ধানের একটি অ্যানিমেটেড জিএফ তৈরি করেছি । এছাড়াও আরো কিছু ধারণা আছে দ্রুততর Dijkstra করা একটি *, যা একটি "লক্ষ্য ভিত্তিক Dijkstra" হয় করছেন মত। এছাড়াও আমি এর জন্য একটি জিআইএফ-অ্যানিমেশন তৈরি করেছি ।

তবে কীভাবে এটি (অনেক) দ্রুত করবেন?

সমস্যাটি হ'ল কোনও পথ অনুসন্ধানের জন্য লোকেশনগুলির মধ্যে থাকা সমস্ত নোড অনুসন্ধান করতে হবে এবং এটি জার্মানিতে ইতিমধ্যে বেশ কয়েক মিলিয়ন লোকের মতোই ব্যয়বহুল। তবে ডিজকস্ট্রা ইত্যাদির অতিরিক্ত ব্যথা পয়েন্টটি হ'ল এই জাতীয় অনুসন্ধানগুলি প্রচুর র‍্যাম ব্যবহার করে।

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

গ্রাফহপারের জন্য আমি সংকোচনের হায়ারারচিজগুলি ব্যবহার করার সিদ্ধান্ত নিয়েছি কারণ এটি প্রয়োগ করা তুলনামূলক 'সহজ' এবং গ্রাফটি প্রস্তুত করার জন্য বয়সগুলি গ্রহণ করে না। আপনি এখনও আমাদের অনলাইন ইভেন্ট গ্রাফহপার ম্যাপে পরীক্ষা করতে পারেন এর মতো এটির খুব দ্রুত প্রতিক্রিয়ার সময়ে ফলাফল হয় । উদাহরণস্বরূপ দক্ষিণ আফ্রিকা থেকে পূর্ব চীন যা 23000 কিলোমিটার দূরত্বে এবং প্রায় 14 দিনের গাড়ি চালানোর সময় এবং সার্ভারে মাত্র 0.1 ডলার নেয়।


লক্ষ্য নির্দেশিত অনুসন্ধান সম্পাদনের জন্য ল্যান্ডমার্কগুলি ব্যবহার করে দ্বিপাক্ষিক ডিজকস্ট্রা একাই দ্বিপাক্ষিক ডিজকস্ট্রার চেয়ে বেশি দক্ষ। দেখুন www14.informatik.tu-muenchen.de/lehre/2010SS/sarental/… তবে এই কাগজটি সামান্য কৌশলযুক্ত বা সম্ভাবনাময় ফাংশনটি গণনা করার জন্য যথেষ্ট বিশদ নয়।
পল চেরনোচ

2

আমি আমার ক্লায়েন্টদের প্রয়োজন অনুসারে সাম্প্রতিক ক্রিয়াকলাপটি ছড়িয়ে দিয়ে কয়েক বছর ধরে রাউটিংয়ের কাজ করেছি এবং আমি পেয়েছি যে এ * সহজেই যথেষ্ট দ্রুতগতিযুক্ত; ইতিমধ্যে অপ্টিমাইজেশন বা আরও জটিল অ্যালগরিদমের সন্ধান করার দরকার নেই। একটি বিশাল গ্রাফের উপর দিয়ে রুট করা কোনও সমস্যা নয়।

তবে গতিটি পুরো রাউটিং নেটওয়ার্কের উপর নির্ভর করে, যার দ্বারা আমি স্মৃতিকে যথাক্রমে রুট বিভাগ এবং জংশনগুলি উপস্থাপন করে আর্কস এবং নোডগুলির নির্দেশিত গ্রাফ বোঝায়। প্রধান সময় ওভারহেড এই নেটওয়ার্ক তৈরি করতে সময় নেওয়া হয়। উইন্ডোজ চলমান একটি সাধারণ ল্যাপটপের উপর ভিত্তি করে কয়েকটি রুক্ষ পরিসংখ্যান এবং পুরো স্পেন জুড়ে: নেটওয়ার্ক তৈরিতে সময় নেওয়া: 10-15 সেকেন্ড; কোনও রুট গণনা করতে সময় নেওয়া: পরিমাপ করা খুব কম।

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


1

আমি ওপিতে মানচিত্রগুলি নিয়ে কী চলছে তা দেখতে পাচ্ছি:

মধ্যবর্তী পয়েন্টটি নির্দিষ্ট করে দিয়ে রুটটি দেখুন: সরল নয় এমন রাস্তার কারণে রুটটি কিছুটা পিছনে চলে যায়।

যদি তাদের অ্যালগরিদম ব্যাকট্র্যাক না করে তবে এটি ছোট রুটটি দেখতে পাবে না।


আকর্ষণীয় ধারণা। আমি আমার পিপিএসে অপারেটিংয়ে আরও একটি লঙ্ঘন যুক্ত করেছি। দয়া করে একবার দেখুন এবং আপনি সেখানে কোনও ব্যাখ্যা দেখতে পান কিনা তা দেখুন।
এ। রেক্স

জুম উপায় পয়েন্ট A নিচে - একটি ক্লিকের সর্বোচ্চ থেকে। কীভাবে ত্রি-পয়েন্টের রুটটি পশ্চিম, দক্ষিণ, পূর্ব দিকে যায়। আমি মনে করি আমরা এমন একটি অ্যালগরিদম খুঁজছি যা চোকপয়েন্টের মধ্য দিয়ে যাওয়ার প্রয়োজন না হলে ব্যাকট্র্যাক করতে পছন্দ করে না।
লরেন পেচটেল

আমার পিপিএস উদাহরণে, সূচনা ঠিকানাটি "10 অ্যাভিনিউ ডি ফ্ল্যান্ড্রে, 75019 প্যারিস" এ পরিবর্তন করুন। এটি আপনার যে সামান্য ব্যাকট্র্যাকের কথা বলছেন তা সরিয়ে দেয় তবে সমস্যাটি এখনও রয়েছে। আমি মনে করি মূল বিষয়টি হ'ল এটি সত্যিই সেই মূল ব্লাভডিতে থাকতে চায় ...
এ। রেক্স

1
আমি এই ক্ষেত্রে এটি পেয়েছি বলে মনে করি: গাড়িতে করে এবং সময়গুলি বোঝায়। এটি সম্ভবত বড় রাস্তাটিকে তত দ্রুত দেখায় এবং হাঁটার রুটটি এটিকে শ্বাসরোধ করে না।
লরেন পেচটেল

1
পিএস: প্রাথমিক সমস্যাটি এই স্ট্যান্ডার্ডটি দ্বারাও বোঝায়, এটি ব্যাকট্র্যাকটি না হতে পারে।
লরেন পেচটেল

0

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


-4

মানচিত্র কখনই পুরো মানচিত্রের কথা বিবেচনা করে না। আমার অনুমানটি হ'ল: - ১. আপনার অবস্থান অনুসারে, তারা সেই জায়গাটিতে একটি জায়গা এবং ল্যান্ডমার্কগুলি লোড করে। ২. আপনি যখন গন্তব্যটি অনুসন্ধান করেন, তখন তারা যখন মানচিত্রের অন্য অংশটি লোড করে এবং দুটি স্থানের বাইরে একটি গ্রাফ তৈরি করে এবং তারপরে সবচেয়ে সংক্ষিপ্ত পথ অ্যালগরিদম প্রয়োগ করে।

এছাড়াও, একটি গুরুত্বপূর্ণ কৌশল ডায়নামিক প্রোগ্রামিং রয়েছে যা আমি সন্দেহ করি যা সংক্ষিপ্ততম পাথের গণনায় ব্যবহৃত হয়। আপনি যে উল্লেখ করতে পারেন।

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