Automorphism generation algorithm

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
1
down vote

favorite












Problem




Given a rooted tree T, i need to iterate over the automorphism group
aut(T), that is the set of all node permutation resulting in an
isomorphic version of T.




E.g. let T be a "cherry": root is connected with 2 children (total 3 nodes and 2 edges). Then aut(T)=(1,2,3)=id,(1,3,2) if the root has the identifier 1.



Algorithms i tried




  1. 'Naive'



    Iterate over the permuation group Pn (all possible permutations of the nodes) and check for each if the permuation is a valid automorphism.
    => runtime O(n!*m) with n the number of nodes of T and m the number of edges of T.




  2. Set of generators using bliss



    I tried using the find_automorphisms_generators function of bliss library, but this is not very helpful, since i have to compute all possible combinations of such generators to obtain the full set of automorphisms. This take a lot of time although the find_automorphisms_generators is very fast...



Question:




Is there any library/function optimized for rooted trees? (i use c++
but i can adapt to anything)








share|cite|improve this question























    up vote
    1
    down vote

    favorite












    Problem




    Given a rooted tree T, i need to iterate over the automorphism group
    aut(T), that is the set of all node permutation resulting in an
    isomorphic version of T.




    E.g. let T be a "cherry": root is connected with 2 children (total 3 nodes and 2 edges). Then aut(T)=(1,2,3)=id,(1,3,2) if the root has the identifier 1.



    Algorithms i tried




    1. 'Naive'



      Iterate over the permuation group Pn (all possible permutations of the nodes) and check for each if the permuation is a valid automorphism.
      => runtime O(n!*m) with n the number of nodes of T and m the number of edges of T.




    2. Set of generators using bliss



      I tried using the find_automorphisms_generators function of bliss library, but this is not very helpful, since i have to compute all possible combinations of such generators to obtain the full set of automorphisms. This take a lot of time although the find_automorphisms_generators is very fast...



    Question:




    Is there any library/function optimized for rooted trees? (i use c++
    but i can adapt to anything)








    share|cite|improve this question





















      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      Problem




      Given a rooted tree T, i need to iterate over the automorphism group
      aut(T), that is the set of all node permutation resulting in an
      isomorphic version of T.




      E.g. let T be a "cherry": root is connected with 2 children (total 3 nodes and 2 edges). Then aut(T)=(1,2,3)=id,(1,3,2) if the root has the identifier 1.



      Algorithms i tried




      1. 'Naive'



        Iterate over the permuation group Pn (all possible permutations of the nodes) and check for each if the permuation is a valid automorphism.
        => runtime O(n!*m) with n the number of nodes of T and m the number of edges of T.




      2. Set of generators using bliss



        I tried using the find_automorphisms_generators function of bliss library, but this is not very helpful, since i have to compute all possible combinations of such generators to obtain the full set of automorphisms. This take a lot of time although the find_automorphisms_generators is very fast...



      Question:




      Is there any library/function optimized for rooted trees? (i use c++
      but i can adapt to anything)








      share|cite|improve this question











      Problem




      Given a rooted tree T, i need to iterate over the automorphism group
      aut(T), that is the set of all node permutation resulting in an
      isomorphic version of T.




      E.g. let T be a "cherry": root is connected with 2 children (total 3 nodes and 2 edges). Then aut(T)=(1,2,3)=id,(1,3,2) if the root has the identifier 1.



      Algorithms i tried




      1. 'Naive'



        Iterate over the permuation group Pn (all possible permutations of the nodes) and check for each if the permuation is a valid automorphism.
        => runtime O(n!*m) with n the number of nodes of T and m the number of edges of T.




      2. Set of generators using bliss



        I tried using the find_automorphisms_generators function of bliss library, but this is not very helpful, since i have to compute all possible combinations of such generators to obtain the full set of automorphisms. This take a lot of time although the find_automorphisms_generators is very fast...



      Question:




      Is there any library/function optimized for rooted trees? (i use c++
      but i can adapt to anything)










      share|cite|improve this question










      share|cite|improve this question




      share|cite|improve this question









      asked Aug 1 at 11:23









      Paul

      513




      513

























          active

          oldest

          votes











          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: "69"
          ;
          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',
          convertImagesToLinks: true,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );








           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2868973%2fautomorphism-generation-algorithm%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes










           

          draft saved


          draft discarded


























           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2868973%2fautomorphism-generation-algorithm%23new-answer', 'question_page');

          );

          Post as a guest













































































          Comments

          Popular posts from this blog

          What is the equation of a 3D cone with generalised tilt?

          Color the edges and diagonals of a regular polygon

          Relationship between determinant of matrix and determinant of adjoint?