# sectrix

Member

5

105 Neutral

• Rank
Newbie
1. ## Understanding the D* lite whitepaper

Fantastic. I really appreciate the help. I owe you a pint.
2. ## Understanding the D* lite whitepaper

OK, I had it backwards then. It's the minimum of ( g(s') + c(s', u) ) as calculated with all s' in predecessors of u. And the key comparison is: (X1, Y1) <= (X2, Y2) iff (X1 < X2) OR [X1 = X2 AND Y1 <= Y2]. Have I got it right? And it seems that everywhere in the pseudo code where there is a < with a dot above it represents this lexicographic comparison, correct?
3. ## Understanding the D* lite whitepaper

I see. So the second line is basically: the minimum s' in predecessors of u, as calculated by ( g(s') + c (s', u) ). Excellent, thank you so much for that. One follow up question then. When comparing: U.TopKey < calculateKeys, ie: (X1, Y1) < (X2, Y2), is this (X1 < X2) AND (Y1 < Y2), or (X1 < X2) OR (Y1 < Y2), or something else entirely?
4. ## Understanding the D* lite whitepaper

I'm writing a tool for a game I play, and I've found I need a good pathfinding algorithm. I've already written an A* and a Dijkstra routine, but I've found them to be far too slow. It takes them about 20 and 13 seconds respectively to find the shortest path along the longer routes. I've come across D* lite as a possible better solution, but there's very little information on the web. Some of what I did find came from here several years ago, so, here's to hoping those members are still around. I found and read Koenig's 2002 paper about it, ([url="http://www.aaai.org/Papers/AAAI/2002/AAAI02-072.pdf"]this[/url] one), and I understand all of the LPA* pseudo code except for two lines: - Calculate keys() In the calculateKeys function, it reads: Return[ min( g(s), rhs(s) ) + h(s, s[sub]goal[/sub]) ; min ( g(s), rhs(s)) ]. What I don't understand is the ; in the middle. Does the function return two values? Does it perform some sort of operation on the results of the two min statements? - Update vertex and rhs calculation The other line I had trouble with was this one: min [sub]s' (is element of) pred(s)[/sub] (g(s'), c(s', s)). I don't get that one at all. The s' in pred() with the smallest g or c? I feel like I'm going to get a lot of blank stares, but, any ideas anyone?
5. ## I want to learn.

The platform you want to program for eventually isn't too big of a concern right now, You need to cut your teeth on the fundamentals first. This is a cool thing about programming - it's all more or less the same. Every language is typed differently, has different features and operates differently under the hood, but the basics of getting things done are the same. Every language will have some way to loop, or to test for a condition, for example. Once the methods of solving problems in programming are second nature to you (once you can think in code, to steal a line from Portal 2), you can move on to more advanced languages and projects. I started with BASIC on a Tandy Color Computer and a Commodore 64. You've probably never heard of those computers - which is because they're over 20 years old. Yet what I learned on those old machines was applicable to other languages I learned later, like PHP and Java. I would put my vote in for starting with Visual Basic. The express edition is free, there are mountains of documentation, tutorials and examples, and it has many features that the 'full' languages have. Buy or rent from your library (which is what I always did) a book on beginning Visual Basic, start at page one, do the examples (important!) and work your way through it. And college is a great idea. You'll have access to people who already know the material, so when you get really lost you literally have industry experts to turn to. They'll also inform you about standards and practices in the industry, help you focus on what to learn, and provide clubs for you to interact with other people interested in the same thing. It'll also round out your programming knowledge. It's easy to miss something early on. Be warned though, programming is a fickle master. You can spend hours pouring over code that isn't working only to find you forgot one little ; that broke everything. Don't give up. Every mistake is one you'll learn from. The next time it happens, and it will, you'll know where to start looking. And like anything else in life, the more you code, the better you'll be.