• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. Nearest Neighbor Problem

Stats

  • Replies 9
  • Subscribers 161
  • Views 15216
  • Members are here 0
More Content

Nearest Neighbor Problem

vramananx
vramananx over 13 years ago

Hi

I am trying to implement the nearest neighbor problem in skill, can anyone help me with some examples and tutorials?

basically i am tryint to get the closest point in a list of points for a given x,y

I am using sortcar to do this but it is very slow since there is a huge amount of calculation goes on

So I would like to use any NNP algorithm and would like some pointers,

 regards

Venkata

  • Sign in to reply
  • Cancel
  • Ejlersen
    Ejlersen over 13 years ago

    Hi

    If you just need the closest point, what's wrong with just running through each element and calculating the distance

    closestpoint = car(listofpoints)

    shortestdistance = axlDistance(referencepoint closestpoint)

    foreach(pid listofpoints

    when(axlDistance(referencepoint lid) < shortestdistance

    shortestdistance = axlDistance(referencepoint lid)

    closestpoint = lid

    )

    )

    that should return the closest point and the shortest distance.

    Best regards

    Ole

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vramananx
    vramananx over 13 years ago

    Hi Ole

    Long time

    there is nothing wrong with your suggestion, that's what i do currently

    for each point

    i append the axldistance from that point to the nearest point's db (list=cons(axldistance(pt1 pt2) list) list=cons(pt2db list))

    then I append that list to another list, then i use sortcar to find the shortest distance and its db

    ------ 

    But the number of points is based upon the number of layer sets, for a 6 layer board it is 3 sets, 8 layer is 4 sets and so on

    now lets say i got 1000+points in each layer set and have to check each and everyone of them to another set of 1000 so it is a factor of

    4.02387260077093773543702433923e+2567 calculations times then number of layer sets

    This becomes an huge issue for a big database

    I was looking at implementing KD-Tree, i will let you know how it goes

    regards

    venkata

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vramananx
    vramananx over 13 years ago

    Hi Ole

    I used 1000! infact it should be 1000 times 1000

    :-)

    regards 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vramananx
    vramananx over 13 years ago

    in anycase I am trying to implement kd-tree

    I have a way to sort the list of points,

    divide them by their median,

    then sort them by y value

    now i have to figure out a way to add them to a parent->child relation

    I am considering using arrays and tables

    if you have any ideas please let me know

    basically i want this structure

    Parent

        -right child----left and right child

          -left child----left and right child

    please refer http://en.wikipedia.org/wiki/K-d_tree regards vramanan

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Ejlersen
    Ejlersen over 13 years ago

    Hi Venkata

    I'm sorry but I have no experience in kd tree's and never done anything to handle so much data that computing speed would be an issue, so I have no real experience in recommending arrays versus lists.

     

     

    Best regards

    Ole

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information