What is this data structure/concept where a plot of points defines a partition to a space












15












$begingroup$


I encountered an algorithm to solve a real world problem, and I remember a class I took where I made something very similar for some for a homework problem. it looks like this



Basically it's a plot of points, and the lines are drawn to be equidistant between two points. It forms a perfect partition where the lines around the point form the shape of area that is closest to that point. Does this ring a bell to anyone? I've had a tough time googling descriptions and getting results. And I don't know how else to describe it. Hopefully the picture helps.










share|cite|improve this question











$endgroup$












  • $begingroup$
    Viewed 1667 times since yesterday? Is SE being hacked?
    $endgroup$
    – HEKTO
    Jan 23 at 18:35










  • $begingroup$
    @HEKTO it was displayed as one of the "Hot Network Questions".
    $endgroup$
    – Apass.Jack
    Jan 25 at 0:53
















15












$begingroup$


I encountered an algorithm to solve a real world problem, and I remember a class I took where I made something very similar for some for a homework problem. it looks like this



Basically it's a plot of points, and the lines are drawn to be equidistant between two points. It forms a perfect partition where the lines around the point form the shape of area that is closest to that point. Does this ring a bell to anyone? I've had a tough time googling descriptions and getting results. And I don't know how else to describe it. Hopefully the picture helps.










share|cite|improve this question











$endgroup$












  • $begingroup$
    Viewed 1667 times since yesterday? Is SE being hacked?
    $endgroup$
    – HEKTO
    Jan 23 at 18:35










  • $begingroup$
    @HEKTO it was displayed as one of the "Hot Network Questions".
    $endgroup$
    – Apass.Jack
    Jan 25 at 0:53














15












15








15


4



$begingroup$


I encountered an algorithm to solve a real world problem, and I remember a class I took where I made something very similar for some for a homework problem. it looks like this



Basically it's a plot of points, and the lines are drawn to be equidistant between two points. It forms a perfect partition where the lines around the point form the shape of area that is closest to that point. Does this ring a bell to anyone? I've had a tough time googling descriptions and getting results. And I don't know how else to describe it. Hopefully the picture helps.










share|cite|improve this question











$endgroup$




I encountered an algorithm to solve a real world problem, and I remember a class I took where I made something very similar for some for a homework problem. it looks like this



Basically it's a plot of points, and the lines are drawn to be equidistant between two points. It forms a perfect partition where the lines around the point form the shape of area that is closest to that point. Does this ring a bell to anyone? I've had a tough time googling descriptions and getting results. And I don't know how else to describe it. Hopefully the picture helps.







algorithms data-structures terminology computational-geometry






share|cite|improve this question















share|cite|improve this question













share|cite|improve this question




share|cite|improve this question








edited Jan 22 at 14:14









Apass.Jack

12.4k1939




12.4k1939










asked Jan 22 at 5:40









BrianBrian

763




763












  • $begingroup$
    Viewed 1667 times since yesterday? Is SE being hacked?
    $endgroup$
    – HEKTO
    Jan 23 at 18:35










  • $begingroup$
    @HEKTO it was displayed as one of the "Hot Network Questions".
    $endgroup$
    – Apass.Jack
    Jan 25 at 0:53


















  • $begingroup$
    Viewed 1667 times since yesterday? Is SE being hacked?
    $endgroup$
    – HEKTO
    Jan 23 at 18:35










  • $begingroup$
    @HEKTO it was displayed as one of the "Hot Network Questions".
    $endgroup$
    – Apass.Jack
    Jan 25 at 0:53
















$begingroup$
Viewed 1667 times since yesterday? Is SE being hacked?
$endgroup$
– HEKTO
Jan 23 at 18:35




$begingroup$
Viewed 1667 times since yesterday? Is SE being hacked?
$endgroup$
– HEKTO
Jan 23 at 18:35












$begingroup$
@HEKTO it was displayed as one of the "Hot Network Questions".
$endgroup$
– Apass.Jack
Jan 25 at 0:53




$begingroup$
@HEKTO it was displayed as one of the "Hot Network Questions".
$endgroup$
– Apass.Jack
Jan 25 at 0:53










2 Answers
2






active

oldest

votes


















30












$begingroup$

What you described is Voronoi diagram.



Here is an excerpt from Wikipedia.




Picture of Voronoi diagram from Wikipedia



In the simplest case, shown in the first picture, we are given a finite set of points ${p_1, cdots, p_n}$ in the Euclidean plane. In this case each site $p_k$ is simply a point, and its corresponding Voronoi cell $R_k$ consists of every point in the Euclidean plane whose distance to $p_k$ is less than or equal to its distance to any other points. Each such cell is obtained from the intersection of half-spaces, and hence it is a convex polygon. The line segments of the Voronoi diagram are all the points in the plane that are equidistant to the two nearest sites. The Voronoi vertices (nodes) are the points equidistant to three (or more) sites.







share|cite|improve this answer









$endgroup$









  • 4




    $begingroup$
    +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
    $endgroup$
    – Sagnik
    Jan 22 at 6:48



















3












$begingroup$

You are looking for a Multi-Class Classification Algorithm. I suggest you have a look at:




  • K-Nearest Neighbors algorithm (or KNN). Here is an introductory blog post.

  • Support Vector Machines. You can start reading up on it here.






share|cite|improve this answer









$endgroup$













    Your Answer





    StackExchange.ifUsing("editor", function () {
    return StackExchange.using("mathjaxEditing", function () {
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
    });
    });
    }, "mathjax-editing");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "419"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f103203%2fwhat-is-this-data-structure-concept-where-a-plot-of-points-defines-a-partition-t%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    30












    $begingroup$

    What you described is Voronoi diagram.



    Here is an excerpt from Wikipedia.




    Picture of Voronoi diagram from Wikipedia



    In the simplest case, shown in the first picture, we are given a finite set of points ${p_1, cdots, p_n}$ in the Euclidean plane. In this case each site $p_k$ is simply a point, and its corresponding Voronoi cell $R_k$ consists of every point in the Euclidean plane whose distance to $p_k$ is less than or equal to its distance to any other points. Each such cell is obtained from the intersection of half-spaces, and hence it is a convex polygon. The line segments of the Voronoi diagram are all the points in the plane that are equidistant to the two nearest sites. The Voronoi vertices (nodes) are the points equidistant to three (or more) sites.







    share|cite|improve this answer









    $endgroup$









    • 4




      $begingroup$
      +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
      $endgroup$
      – Sagnik
      Jan 22 at 6:48
















    30












    $begingroup$

    What you described is Voronoi diagram.



    Here is an excerpt from Wikipedia.




    Picture of Voronoi diagram from Wikipedia



    In the simplest case, shown in the first picture, we are given a finite set of points ${p_1, cdots, p_n}$ in the Euclidean plane. In this case each site $p_k$ is simply a point, and its corresponding Voronoi cell $R_k$ consists of every point in the Euclidean plane whose distance to $p_k$ is less than or equal to its distance to any other points. Each such cell is obtained from the intersection of half-spaces, and hence it is a convex polygon. The line segments of the Voronoi diagram are all the points in the plane that are equidistant to the two nearest sites. The Voronoi vertices (nodes) are the points equidistant to three (or more) sites.







    share|cite|improve this answer









    $endgroup$









    • 4




      $begingroup$
      +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
      $endgroup$
      – Sagnik
      Jan 22 at 6:48














    30












    30








    30





    $begingroup$

    What you described is Voronoi diagram.



    Here is an excerpt from Wikipedia.




    Picture of Voronoi diagram from Wikipedia



    In the simplest case, shown in the first picture, we are given a finite set of points ${p_1, cdots, p_n}$ in the Euclidean plane. In this case each site $p_k$ is simply a point, and its corresponding Voronoi cell $R_k$ consists of every point in the Euclidean plane whose distance to $p_k$ is less than or equal to its distance to any other points. Each such cell is obtained from the intersection of half-spaces, and hence it is a convex polygon. The line segments of the Voronoi diagram are all the points in the plane that are equidistant to the two nearest sites. The Voronoi vertices (nodes) are the points equidistant to three (or more) sites.







    share|cite|improve this answer









    $endgroup$



    What you described is Voronoi diagram.



    Here is an excerpt from Wikipedia.




    Picture of Voronoi diagram from Wikipedia



    In the simplest case, shown in the first picture, we are given a finite set of points ${p_1, cdots, p_n}$ in the Euclidean plane. In this case each site $p_k$ is simply a point, and its corresponding Voronoi cell $R_k$ consists of every point in the Euclidean plane whose distance to $p_k$ is less than or equal to its distance to any other points. Each such cell is obtained from the intersection of half-spaces, and hence it is a convex polygon. The line segments of the Voronoi diagram are all the points in the plane that are equidistant to the two nearest sites. The Voronoi vertices (nodes) are the points equidistant to three (or more) sites.








    share|cite|improve this answer












    share|cite|improve this answer



    share|cite|improve this answer










    answered Jan 22 at 6:38









    Apass.JackApass.Jack

    12.4k1939




    12.4k1939








    • 4




      $begingroup$
      +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
      $endgroup$
      – Sagnik
      Jan 22 at 6:48














    • 4




      $begingroup$
      +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
      $endgroup$
      – Sagnik
      Jan 22 at 6:48








    4




    4




    $begingroup$
    +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
    $endgroup$
    – Sagnik
    Jan 22 at 6:48




    $begingroup$
    +1. I refrained from mentioning them and went for implementations because I remember my professors mentioning them with a footnote that Voronoi Diagrams are computationally quite complex to implement in higher dimensions. So simple kNN implementations get the job done much better. However the condition that "lines are drawn to be equidistant between two points" may not be fulfilled.
    $endgroup$
    – Sagnik
    Jan 22 at 6:48











    3












    $begingroup$

    You are looking for a Multi-Class Classification Algorithm. I suggest you have a look at:




    • K-Nearest Neighbors algorithm (or KNN). Here is an introductory blog post.

    • Support Vector Machines. You can start reading up on it here.






    share|cite|improve this answer









    $endgroup$


















      3












      $begingroup$

      You are looking for a Multi-Class Classification Algorithm. I suggest you have a look at:




      • K-Nearest Neighbors algorithm (or KNN). Here is an introductory blog post.

      • Support Vector Machines. You can start reading up on it here.






      share|cite|improve this answer









      $endgroup$
















        3












        3








        3





        $begingroup$

        You are looking for a Multi-Class Classification Algorithm. I suggest you have a look at:




        • K-Nearest Neighbors algorithm (or KNN). Here is an introductory blog post.

        • Support Vector Machines. You can start reading up on it here.






        share|cite|improve this answer









        $endgroup$



        You are looking for a Multi-Class Classification Algorithm. I suggest you have a look at:




        • K-Nearest Neighbors algorithm (or KNN). Here is an introductory blog post.

        • Support Vector Machines. You can start reading up on it here.







        share|cite|improve this answer












        share|cite|improve this answer



        share|cite|improve this answer










        answered Jan 22 at 5:52









        SagnikSagnik

        669519




        669519






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Computer Science Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f103203%2fwhat-is-this-data-structure-concept-where-a-plot-of-points-defines-a-partition-t%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

            ts Property 'filter' does not exist on type '{}'

            Notepad++ export/extract a list of installed plugins