Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7641349
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T08:53:58+00:00 2026-05-31T08:53:58+00:00

I need to find the optimal path connecting two planar points. I’m given a

  • 0

I need to find the optimal path connecting two planar points. I’m given a function that determines the maximal advance velocity, which depends on both the location and the time.

My solution is based on Dijkstra algorithm. At first I cover the plane by a 2D lattice, considering only discrete points. Points are connected to their neighbors up to specified order, to get sufficient direction resolution. Then I find the best path by (sort of) Dijkstra algorithm. Next I improve the resolution/quality of the found path. I increase the lattice density and neighbor connectivity order, together with restricting the search only to the points close enough to the already-found path. This may be repeated until the needed resolution is achieved.

This works generally well, but nevertheless I’d like to improve the overall algorithm performance. I’ve implemented several tricks, such as variable lattice density and neighbor connectivity order, based on “smoothness” of the price function. However I believe there’s a potential to improve Dijkstra algorithm itself (applicable to my specific graph), which I couldn’t fully realize yet.

First let’s agree on the terminology. I split all the lattice points into 3 categories:

  • cold – points that have not been reached by the algorithm.
  • warm – points that are reached, but not fully processed yet (i.e. have potential for improvement)
  • stable – points that are fully processed.

At each step Dijkstra algorithm picks the “cheapest” warm lattice point, and then tries to improve the price of its neighbors. Because of the nature of my graph, I get a kind of a cloud of stable points, surrounded by a thin layer of warm points. At each step a warm point at the cloud perimeter is processed, then it’s added to the stable cloud, and the warm perimeter is (potentially) expanded.

The problem is that warm points that are consequently processed by the algorithm are usually spatially (hence – topologically) unrelated. A typical warm perimeter consists of hundreds of thousands of points. At each step the next warm point to process is pseudo-randomal (spatially), hence there’s virtually no chance that two related points are processed one after another.

This indeed creates a problem with CPU cache utilization. At each step the CPU deals with pseudo-random memory location. Since there’s a large amount of warm points – all the relevant data may not fit the CPU cache (it’s order of tens to hundreds of MB).

Well, this is indeed the implication of the Dijkstra algorithm. The whole idea is explicitly to pick the cheapest warm point, regardless to other properties.

However intuitively it’s obvious that points on one side of a big cloud perimeter don’t make any sense to the points on another side (in our specific case), and there’s no problem to swap their processing order.

Hence I though about ways of “adjusting” the warm points processing order, yet without compromising the algorithm in general. I thought about several ideas, such as diving the plane into blocks, and partially solving them independently until some criteria is met, meaning their solution may be interfered. Or alternatively ignore the interference, and potentially allow the “re-solving” (i.e. transition from stable back to warm).

However so far I could not find rigorous method.

Are there any ideas how to do this? Perhaps it’s a know problem, with existing research and (hopefully) solutions?

Thanks in advance. And sorry for the long question.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T08:54:00+00:00Added an answer on May 31, 2026 at 8:54 am

    What you’re describing is the motivation behind the A* search algorithm, a modification of Dijkstra’s algorithm that can dramatically improve the runtime by guiding the search in a direction that is likely to pick points that keep getting closer and closer to the destination. A* never does any more work than a naive Dijkstra’s implementation, and typically tends to expand out nodes that are clustered on the frontier of the warm nodes that are closest to the destination node.

    Internally, A* works by augmenting Dijkstra’s algorithm with a heuristic function that estimates the remaining distance to the target node. This means that if you get can get a rough approximation of how far away a given node is from the destination, you can end up ignoring nodes that don’t need to be processed in favor of nodes that are likely to be better.

    A* was not designed as a cache-optimal algorithm, but I believe that the increase in speed due to

    1. Expanding fewer nodes (less in the cache), and
    2. Expanding nodes closer to the goal (which were processed more recently and thus more likely to be in the cache)

    will give you a huge performance increase and better cache performance.

    Hope this helps!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to find the most optimal combination of coins that makes up a
I need to find/create an application that will create employee web usage reports from
I need to find out the time a function takes for computing the performance
I need to find all occurrences of a function call in a C++ file
I've been trying to find the optimal solution to the following (interesting?) problem that
I need to find the most optimal solution using Regex to find URL's inside
Given an integer array, i need to find which number occurred most number of
I need to find out how to format numbers as strings. My code is
I need to find a bottleneck and need to accurately as possible measure time.
I need to find the PID of the current running process on a Linux

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.