mise à jour de réponse, 12/22: En utilisant Peter Shor de observation qu'il ya un morphisme entre les sections distinctes et permutations des objets sur le cube, la liste de toutes ces permutations en représentant un groupe de symétries cube comme un sous-groupe de SymmetricGroup [8] et en utilisant GroupElements/Permute, trouver des missions barycentre utilisant le solveur de Mathematica, ensembles de sélection de point avec des valeurs singulières distinctes, quelques détails et code complet donné hereListing toutes les sections intéressantes d'un tétraèdre
question
Une section 2D intéressante est un plan qui passe par le centre d'une 3D régulière simplex et 2 autres points dont chacun est un centroïde d'un sous-ensemble non-vide de sommets. Il est défini par deux sous-ensembles de sommets. Par exemple {{1}, {1,2}} donne un plan défini par 3 points - centre du tétraèdre, premier sommet, et moyenne des premier et second sommets.
un ensemble intéressant de sections est un ensemble dans lequel pas deux sections définissent le même plan sous le sommet réétiquetage. Par exemple, définir {{{1}, {2}}, {{3}, {4}}} n'est pas intéressant. Existe-t-il une approche efficace pour trouver un ensemble intéressant de sections intéressantes? J'ai besoin de quelque chose qui pourrait généraliser à un problème analogue pour les sections 3D de 7D simplex, et finir du jour au lendemain.
Mon approche est tentée ci-dessous. Un problème est que si vous ignorez la géométrie, certaines sections équivalentes vont être conservées, donc j'obtiens 10 sections au lieu de 3. Un plus gros problème est que j'ai utilisé la force brute et que ça n'a certainement pas d'échelle et (nécessite 10^17 comparaisons pour simplex 7D)
http://yaroslavvb.com/upload/simplex-sections.png
Voici le code Mathematica pour générer l'image ci-dessus.
entropy[vec_] := Total[Table[p Log[p], {p, vec}]];
hadamard = KroneckerProduct @@ Table[{{1, 1}, {1, -1}}, {2}];
(* rows of hadamard matrix give simplex vertex coordinates *)
vertices = hadamard;
invHad = Inverse[hadamard];
m = {m1, m2, m3, m4};
vs = Range[4];
(* take a set of vertex averages, generate all combinations arising \
from labeling of vertices *)
vertexPermutations[set_] := (
newSets = set /. Thread[vs -> #] & /@ Permutations[vs];
Map[Sort, newSets, {2}]
);
(* anchors used to define a section plane *)
sectionAnchors = Subsets[{1, 2, 3, 4}, {1, 3}];
(* all sets of anchor combinations with centroid anchor always \
included *)
anchorSets = Subsets[sectionAnchors, {2}];
anchorSets = Prepend[#, {1, 2, 3, 4}] & /@ anchorSets;
anchorSets = Map[Sort, anchorSets, {2}];
setEquivalent[set1_, set2_] := MemberQ[vertexPermutations[set1], set2];
equivalenceMatrix =
Table[Boole[setEquivalent[set1, set2]], {set1, anchorSets}, {set2,
anchorSets}];
Needs["GraphUtilities`"];
(* Representatives of "vertex-relabeling" equivalence classes of \
ancher sets *)
reps = First /@ StrongComponents[equivalenceMatrix];
average[verts_] := Total[vertices[[#]] & /@ verts]/Length[verts];
makeSection2D[vars_, {p0_, p1_, p2_}] := Module[{},
v1 = p1 - p0 // Normalize;
v2 = p2 - p0;
v2 = v2 - (v1.v2) v1 // Normalize;
Thread[vars -> (p0 + v1 x + v2 y)]
];
plotSection2D[f_, pointset_] := (
simplex =
Graphics3D[{Yellow, Opacity[.2],
GraphicsComplex[[email protected]@hadamard,
Polygon[Subsets[{1, 2, 3, 4}, {3}]]]}];
anchors = average /@ pointset;
section = makeSection2D[m, anchors];
rf = Function @@ ({{x, y, z, u, v},
And @@ Thread[invHad.{1, x, y, z} > 0]});
mf = Function @@ {{p1, p2, p3, x, y}, f[invHad.m /. section]};
sectionPlot =
ParametricPlot3D @@ {Rest[m] /. section, {x, -3, 3}, {y, -3, 3},
RegionFunction -> rf, MeshFunctions -> {mf}};
anchorPlot = Graphics3D[Sphere[Rest[#], .05] & /@ anchors];
Show[simplex, sectionPlot, anchorPlot]
);
plots = Table[
plotSection2D[entropy, anchorSets[[rep]]], {rep, reps}];
GraphicsGrid[Partition[plots, 3]]
Pouvez-vous expliquer pourquoi {{1,2}, {3,4}} n'est pas "intéressant"? Quel est le nouveau marquage qui donne la même section? – ysap
Vous mappez les vertex 1 à 3 et les vertex 2 à 4. Ce n'est pas intéressant car les sections se ressemblent. Dans ma photo, vous pouvez voir qu'il n'y a que 2 formes distinctes - triangle et carré. Tout le reste est une sorte de rotation/réflexion de ces formes –
J'ai essayé plusieurs fois de trouver la notation de {{1}, {1,2}} et {{{1}, {2}}, {{3} , {4}}}, mais ne pouvait tout simplement pas. Pouvez-vous fournir un lien qui l'explique? – Dialecticus