Jump to content

Welcome to Geeks to Go - Register now for FREE

Need help with your computer or device? Want to learn new tech skills? You're in the right place!
Geeks to Go is a friendly community of tech experts who can solve any problem you have. Just create a free account and post your question. Our volunteers will reply quickly and guide you through the steps. Don't let tech troubles stop you. Join Geeks to Go now and get the support you need!

How it Works Create Account
Photo

Manhattan Distance Function - Python


  • Please log in to reply

#1
smitty1199

smitty1199

    New Member

  • Member
  • Pip
  • 3 posts
Hello Everyone,

I've been trying to craft a Manhattan distance function in Python.
However, it seems quite straight forward but I am having trouble.

Can anyone help me out with Manhattan distance metric written in Python?

Thanks in advance,

Smitty
  • 0

Advertisements


#2
smitty1199

smitty1199

    New Member

  • Topic Starter
  • Member
  • Pip
  • 3 posts
Any help would be greatly appreciated! Thanks.
  • 0

#3
Dan

Dan

    Trusted Tech

  • Retired Staff
  • 1,771 posts
Hey Smitty,

I've only ever done the Manhattan distance in C/C++ (for an A* Search, if memory serves). However, if you could post what you have so far, I may be able to point you in the right direction.

It really is quite a simple alg; all you want to do is get the difference of the x and y co-ordinates, in a sort of right-angle walk approach. So, say you were at (15,20) and you wanted to get the distance to (35,40), you would do (35-15) + (40-20), giving you a distance of 40.

So, a pseudo approach would be:
Let curr.x = 15, curr.y = 20;
Let dest.x = 35, dest.y = 40;

man_dist = ((dest.x - curr.x) + (dest.y - curr.y))

At least, thats how I remember the Manhattan distance. I could be wrong; it has been some time :)

Like I said, show us your code and we may be able to walk you through it.
  • 0

#4
smitty1199

smitty1199

    New Member

  • Topic Starter
  • Member
  • Pip
  • 3 posts
Here's my start....

Any suggestions?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#This operation returns the Manhattan distance.
#
def getManhattan(xList,yList):

return float(xList[0]-yList[0])+ abs(xList[1]-yList[1])
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 0

#5
Dan

Dan

    Trusted Tech

  • Retired Staff
  • 1,771 posts
Hey Smitty,

Is xList a list of all of your x co-ords, and yList a list of all of your y co-ords? And you only want to ever get the distance between the first and second point (0 and 1)?

If so, try this:
#This operation returns the Manhattan distance.
#
def getManhattan(xList,yList):

return float(xList[0]-xList[1]) + abs(yList[0]-yList[1])
As a note here, you may need to swap the 1 and 0 around, depending on how you are storing points. I would expect xList[1]-xList[0] + yList[1]-yList[0] to be closer to what you need, but I'm not sure how exactly you are storing points, so I can't be 100% certain.
  • 0






Similar Topics

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

As Featured On:

Microsoft Yahoo BBC MSN PC Magazine Washington Post HP