networks, spanning trees and steiner points · networks, spanning trees and steiner points...

12
Math1116Chap7SpanningTreesDone.notebook March 18, 2013 Networks, Spanning Trees and Steiner Points Network Another name for a connected graph. Tree A network with no circuits. Spanning Tree A subgraph that connects all the vertices of the network and has no circuits. Minimum Spanning Tree (MST) Among all spanning trees of a weighted network, one with the least total weight.

Upload: others

Post on 12-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Networks, Spanning Trees and Steiner Points

    • NetworkAnother name for a connected graph.

    • TreeA network with no circuits.

    • Spanning TreeA subgraph that connects all the 

    vertices of the network and has no circuits.• Minimum Spanning Tree (MST)

    Among all spanning trees of a weighted network, one with the least total weight.

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Properties of TreesProperty 1In a tree, there is one and only one path joining any two vertices.If there is one and only one path joining any two vertices of a graph, then the graph must be a tree.

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Property 2In a tree, every edge is a bridge.If every edge of a graph is a bridge, then the graph must be a tree.

    Here do we mean "graphs" or "networks"?

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Property 3A tree with N vertices has N – 1 edges.If a network has N vertices and N – 1 edges, then it must be a tree.

    (This second statement isn't quite true for all graphs. Just for networks. What is the difference?)

    Note that every time you add a new vertex and an edge connecting it to the original tree, then you get a new tree and the number of edges is still one less than the number of vertices.

    N=      verticesE=       edges

    N=     verticesE=      edges

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Spanning TreesProperty 4If a network has N vertices and M edges, then M ≥ N – 1. 

    R = M – (N – 1) is the redundancy of the network. The number of edges you need to remove to make it a tree.

    If M = N – 1, the network is a tree; if M > N –1, the network has circuits and is not a tree. (In other words, a tree is a network with zero redundancy and a network with positive redundancy is not a tree.

    N= 14 VerticesE= 29 edgesR= 29(141)=16 extra edges

    Consider the following map of seven Towns. Suppose your goal is to connect them all with a water irrigation pipeline. The graph at the right shows the "cost" of installing each of the possible pipes.

    How would you do it?

    try again.....

    Total Cost:

    Total Cost:

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    There are many spanning trees in a graph.How could you find a Minimum Cost Spanning Tree?

    Many ways to approach the problem.We'll discuss "Kruskal's Algorithm".

    "Kruskal's Algorithm".

    First Step.  Among all the possible links, we choose the cheapest one, 

    Each Step: Pick Cheapest possible remaining link so that...

    When do you finish? 

    How many edges do you have to add?

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    http://www.cuttheknot.org/Curriculum/Combinatorics/WGraphs.shtml

    Two Examples of Kruskal's Algorithm

    http://students.ceid.upatras.gr/~papagel/project/kruskal.htm

    Is Kruskal's Algorithm Optimal?

    Does it always give the best possible spanning tree?

    http://www.cut-the-knot.org/curriculum/combinatorics/wgraphs.shtmlhttp://students.ceid.upatras.gr/~papagel/project/kruskal.htm

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Look at a "cut set of edges" that breaks the graph into two parts.

    Cost = 45+30+50+30+45+75+40+80+45         = 440

    Cost = 20+30+45+40+75+90+50+45+15          = 410

    Optimal Spanning Tree has cost 295. How can you improve these spanning trees?

    Try Kruskal's Algorithm

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    Every edge in the spanning tree is a bridge of the spanning tree.

    Removing it breaks the tree into two disconnected parts.There are many edges from one part to the other.

    Adding any of them will make a new spanning tree.

    Picking the cheapest edge will make the cheapest of all those spanning trees.

    Since Kruskal's algorithm adds the cheapest edges first, this assures that the resulting spanning tree will be the cheapest possible.

    Explanation that shows that Kruskal's Algorithm will always find the optimal spanning tree.

    Another algorithm Prim's Algorithm.Informally:1. Pick any point to start.2. Chose the cheapest edge that connected your "treesofar" with a new vertex.3. Repeat until all the vertices are included.

    Start at H1. Start at H7

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

    http://en.wikipedia.org/wiki/File:MAZE_30x20_Prim.ogv

    Use Prim's Algorithm to generate a maze.

    Start with a grid graph.Give each edge a "random" weight.Start at bottom right corner. Add edges following Prim's Algorithm. 

    http://en.wikipedia.org/wiki/file:maze_30x20_prim.ogv

  • Math1116Chap7SpanningTreesDone.notebook March 18, 2013

  • Attachments

    SingleSharePasswordProtectedVisualCryptographyViaCellularAut.cdf

    (* Content-type: application/vnd.wolfram.cdf.text *)

    (*** Wolfram CDF File ***)(* http://www.wolfram.com/cdf *)

    (* CreatedBy='Mathematica 8.0' *)

    (*************************************************************************)(* *)(* The Mathematica License under which this file was created prohibits *)(* restricting third parties in receipt of this file from republishing *)(* or redistributing it by any means, including but not limited to *)(* rights management or terms of use, without the express consent of *)(* Wolfram Research, Inc. *)(* *)(*************************************************************************)

    (*CacheID: 234*)(* Internal cache information:NotebookFileLineBreakTestNotebookFileLineBreakTestNotebookDataPosition[ 835, 17]NotebookDataLength[ 89077, 1744]NotebookOptionsPosition[ 62809, 1176]NotebookOutlinePosition[ 89114, 1738]CellTagsIndexPosition[ 89003, 1732]WindowTitle->Single-Share Password-Protected Visual Cryptography via Cellular \AutomataWindowFrame->Normal*)

    (* Beginning of Notebook Content *)Notebook[{Cell[BoxData[ ButtonBox[ GraphicsBox[RasterBox[CompressedData["1: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 "], {{0, 0}, {1714, 38}}, {0, 255}, ColorFunction->RGBColor], ImageSize->{1714, 38}, PlotRange->{{0, 1714}, {0, 38}}], Alignment->Left, BaseStyle->{"Hyperlink", "DemonstrationHeader"}, ButtonData->{ URL["http://demonstrations.wolfram.com"], None}, ButtonNote->"http://demonstrations.wolfram.com"]], "DemonstrationHeader"],

    Cell["\", "DemoTitle"],

    Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`pos$$ = {92.25, 0}, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`pos$$], {92.25, 0}}, {30.75, 0}, {92.25, 0}}}, Typeset`size$$ = {200., {144., 149.}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`pos$134767$$ = {0, 0}}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`pos$$ = {92.25, 0}}, "ControllerVariables" :> { Hold[$CellContext`pos$$, $CellContext`pos$134767$$, {0, 0}]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> Graphics[{ Inset[$CellContext`hexEncryptedRasterImage, {$CellContext`imageWidth/ 2, 0}, {Center, Bottom}, {$CellContext`verticalUnit Part[$CellContext`image, 1, 2, 2, 1], $CellContext`horizontalUnit Part[$CellContext`image, 1, 2, 2, 2]}], Inset[$CellContext`hexKeyRasterImage, { Part[$CellContext`pos$$, 1], 0}, { Center, Bottom}, {$CellContext`verticalUnit Part[$CellContext`image, 1, 2, 2, 1], $CellContext`horizontalUnit Part[$CellContext`image, 1, 2, 2, 2]}]}, PlotRange -> {{0, $CellContext`imageWidth 2}, { 0, $CellContext`imageHeight}}, PlotLabel -> ArrayPlot[$CellContext`Picture], ImageSize -> 200], "Specifications" :> {{{$CellContext`pos$$, {92.25, 0}}, {30.75, 0}, { 92.25, 0}, ControlType -> Locator, Appearance -> None}}, "Options" :> {}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{251., {176., 181.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>(($CellContext`Picture = CompressedData["1:eJxTTMoPSmJiYGAQgWIYYGRkZEADjFCMJoQmyIhGozAZkRhgC0AEI5LxCALDYOwugBiFYQmaICOybkZUIZjNUB8T7X50QVSH4XI/hvMZMAMaGQAAIQMCCw==

    "]; {$CellContext`width, $CellContext`height} = Dimensions[$CellContext`Picture]; If[$CellContext`width < 100, $CellContext`PasswordCA[ Pattern[$CellContext`L, Blank[List]], Pattern[$CellContext`b, Blank[]]] := ReplacePart[ CellularAutomaton[30, $CellContext`L], 1 -> $CellContext`b]; $CellContext`$InitCond = RandomInteger[1, 100]; $CellContext`$ExtraBits = RandomInteger[1, 100]; $CellContext`LargeCA = FoldList[$CellContext`PasswordCA, $CellContext`$InitCond, \$CellContext`$ExtraBits]; $CellContext`Password = Join[$CellContext`$InitCond, $CellContext`$ExtraBits]; \$CellContext`CA = Take[$CellContext`LargeCA, {101 - $CellContext`width, 100}, { 101 - $CellContext`height, 100}]; Null, $CellContext`Password = RandomInteger[{0, 1}, $CellContext`width]; $CellContext`CA = CellularAutomaton[30, $CellContext`Password, $CellContext`height]; Null]; $CellContext`Share1 = ReplaceAll[ RandomInteger[1, {2 $CellContext`width, 2 $CellContext`height}], 1 -> 0]; $CellContext`Share2 = $CellContext`Share1; $CellContext`Share3 = \$CellContext`Share2; $CellContext`temp = Do[ If[ Extract[$CellContext`CA, {$CellContext`i, $CellContext`j}] == 1, {$CellContext`Share1 = ReplacePart[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j} -> 1], $CellContext`Share1 = ReplacePart[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 1]}, {$CellContext`Share1 = ReplacePart[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 1], $CellContext`Share1 = ReplacePart[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 1]}, Null], {$CellContext`i, $CellContext`width}, {$CellContext`j, \$CellContext`height}]; $CellContext`temp = Do[{ If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 1, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j}] == 1], $CellContext`Share2 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 1], $CellContext`Share5 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 1, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j - 1}] == 1], $CellContext`Share2 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 1], $CellContext`Share5 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 1, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j}] == 1], $CellContext`Share2 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i, 2 $CellContext`j} -> 1], $CellContext`Share5 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 1, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j - 1}] == 1], $CellContext`Share2 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 1], $CellContext`Share5 = ReplacePart[$CellContext`Share2, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 0]]}, {$CellContext`i, $CellContext`width}, {$CellContext`j, \$CellContext`height}]; $CellContext`temp = Do[{ If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j - 1}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j - 1}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 0]]}, {$CellContext`i, $CellContext`width}, {$CellContext`j, \$CellContext`height}]; $CellContext`temp = Do[{ If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i, 2 $CellContext`j - 1}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i, 2 $CellContext`j - 1} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j} -> 0]], If[ And[ Extract[$CellContext`Picture, {$CellContext`i, $CellContext`j}] == 0, Extract[$CellContext`Share1, { 2 $CellContext`i - 1, 2 $CellContext`j - 1}] == 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 1], $CellContext`Share3 = ReplacePart[$CellContext`Share3, { 2 $CellContext`i - 1, 2 $CellContext`j - 1} -> 0]]}, {$CellContext`i, $CellContext`width}, {$CellContext`j, \$CellContext`height}]; $CellContext`Share4 = $CellContext`Share2 + \$CellContext`Share3; $CellContext`Final = ReplaceAll[$CellContext`Share4 + $CellContext`Share1, 2 -> 0]; ReplaceAll[ Partition[$CellContext`Final, {2, 2}], {{{0, 0}, {0, 0}} -> 0, {{0, 0}, {0, 1}} -> 0, {{0, 0}, {1, 0}} -> 0, {{0, 0}, {1, 1}} -> 0, {{0, 1}, {0, 0}} -> 0, {{0, 1}, {0, 1}} -> 0, {{0, 1}, {1, 0}} -> 0, {{0, 1}, {1, 1}} -> 1, {{1, 0}, {0, 0}} -> 0, {{1, 0}, {0, 1}} -> 0, {{1, 0}, {1, 0}} -> 0, {{1, 0}, {1, 1}} -> 1, {{1, 1}, {0, 0}} -> 0, {{1, 1}, {0, 1}} -> 1, {{1, 1}, {1, 0}} -> 1, {{1, 1}, {1, 1}} -> 1}]; $CellContext`image = $CellContext`temp; $CellContext`image = Graphics[ Raster[CompressedData["1:eJy90csNwjAMBuDE9SLcYB1G6ALd/0ZUN/UzxKDCL/kQ55OlOLd1e65QSrm3erRafNAFWj6HtUauBhO7VC6GRCUbwho6+xiSyvFAB/sQeRjAKlwMhVRuDDnsvoP4xkmISYgpqJanIEiIsdtlh/prfcDB2LGcuVPO2EkTjmSCEc25JtGm3/AG7R4NBLgYWuch/gg65yFABu6tOTxaoQOrSAYwyvXwT3kBURARAg== "], {{0, 0}, {41, 40}}, ColorFunction -> (Apply[RGBColor, Part[CompressedData["1:eJxTTMoPSmViYGAQAGIWBkLgg30wGFzGoGHyYWDwDIOGyROiZ84AgRP2omBw1R7dfjEweGYvBAaHMOTjweC9/d8/IPAGQ14ODNbZP7gPAu/t//8DgXdw+yHmPrLfuwcEMPUbgMEDewkwWAGlT6D5g4EBIt5hLwMGb9DM32Q/YzoIHLefNBEEHuKUnzwJBB5hmA8DAmCwAKc8xP41GObDwnniBBB4AJcHAGdWf3w= "], #]]& ), ColorFunctionScaling -> False], Background -> None, ImageSize -> {12., 11.}, PlotRange -> {{0, 41}, {0, 40}}]; $CellContext`imageLevels = Map[First, Sort[ Tally[ Flatten[ Part[$CellContext`image, 1, 1]]], Part[#, 1] < Part[#2, 1]& ]]; $CellContext`halfShadedHexagon = N[ Table[{ Sin[$CellContext`\[Theta]], Cos[$CellContext`\[Theta]]}, {$CellContext`\[Theta], 0, Pi, Pi/ 3}]]; $CellContext`horizontalUnit = N[2 Cos[Pi/6]]; $CellContext`halfHorizontalUnit = N[$CellContext`horizontalUnit/2]; $CellContext`verticalUnit = N[1 + Sin[Pi/6]]; $CellContext`key = (SeedRandom[12345]; N[ Table[RandomInteger[{0, 5}] (Pi/3), { Part[$CellContext`image, 1, 2, 2, 2]}, { Part[$CellContext`image, 1, 2, 2, 1]}]]); $CellContext`hexKeyImageDataSet = ReflectionTransform[{-1, 1}][ Flatten[ Table[RotationTransform[ Part[$CellContext`key, $CellContext`i, \$CellContext`j]][$CellContext`halfShadedHexagon] + Table[{$CellContext`i $CellContext`horizontalUnit + If[ EvenQ[$CellContext`j], $CellContext`halfHorizontalUnit, 0], $CellContext`j $CellContext`verticalUnit}, { 4}], {$CellContext`i, 1, Part[$CellContext`image, 1, 2, 2, 2]}, {$CellContext`j, 1, Part[$CellContext`image, 1, 2, 2, 1]}], 2]]; $CellContext`encryptedImageDataSet = $CellContext`key + Replace[ Part[$CellContext`image, 1, 1], { Part[$CellContext`imageLevels, 1] -> Pi, Part[$CellContext`imageLevels, 2] -> 2 (Pi/3), Part[$CellContext`imageLevels, 3] -> Pi/3, Part[$CellContext`imageLevels, 4] -> 0, Blank[] -> 0}, { 2}]; $CellContext`hexEncryptedImageDataSet = ReflectionTransform[{-1, 1}][ Flatten[ Table[RotationTransform[ Part[$CellContext`encryptedImageDataSet, $CellContext`i, \$CellContext`j]][$CellContext`halfShadedHexagon] + Table[{$CellContext`i $CellContext`horizontalUnit + If[ EvenQ[$CellContext`j], $CellContext`halfHorizontalUnit, 0], $CellContext`j $CellContext`verticalUnit}, { 4}], {$CellContext`i, 1, Part[$CellContext`image, 1, 2, 2, 2]}, {$CellContext`j, 1, Part[$CellContext`image, 1, 2, 2, 1]}], 2]]; $CellContext`hexPointSets = Table[{$CellContext`i, $CellContext`i + 1, $CellContext`i + 2, $CellContext`i + 3}, {$CellContext`i, 1, (4 Part[$CellContext`image, 1, 2, 2, 2]) Part[$CellContext`image, 1, 2, 2, 1], 4}]; {$CellContext`imageWidth, $CellContext`imageHeight} = \{$CellContext`verticalUnit Part[$CellContext`image, 1, 2, 2, 1], $CellContext`horizontalUnit Part[$CellContext`image, 1, 2, 2, 2]}; $CellContext`ShareFlipped = ReplaceAll[$CellContext`Share4, 1 -> {1, 0}]; $CellContext`hexKeyRasterImage = Graphics[ Raster[ Reverse[$CellContext`ShareFlipped]], ImageSize -> 350, Background -> None]; $CellContext`hexEncryptedRasterImage = Graphics[ Raster[ Reverse[$CellContext`Share1]], ImageSize -> 350]; Null); Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->71661223],

    Cell["\", "ManipulateCaption", CellID->2366064],

    Cell["\", "ManipulateCaption", CellID->1111732002],

    Cell["THINGS TO TRY", "ManipulateCaption", CellFrame->{{0, 0}, {1, 0}}, CellFrameColor->RGBColor[0.87, 0.87, 0.87], FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold", FontColor->RGBColor[0.597406, 0, 0.0527047], CellTags->"ControlSuggestions"],

    Cell[TextData[{ Cell[BoxData[ TooltipBox[ PaneSelectorBox[{False->Cell[TextData[StyleBox["Drag Locators", FontFamily->"Verdana"]]], True->Cell[TextData[StyleBox["Drag Locators", FontFamily->"Verdana", FontColor->GrayLevel[0.5]]]]}, Dynamic[ CurrentValue["MouseOver"]]], RowBox[{"\"Drag any locator (\"", GraphicsBox[ LocatorBox[ Scaled[{0.5, 0.5}]], ImageSize -> 20], "\", etc.) to move it around.\""}], TooltipStyle->{ FontFamily -> "Verdana", FontSize -> 10, FontColor -> GrayLevel[0.35], Background -> GrayLevel[0.98]}]]], StyleBox["\[NonBreakingSpace]\[FilledVerySmallSquare]\[NonBreakingSpace]", FontColor->RGBColor[0.928786, 0.43122, 0.104662]], Cell[BoxData[ TooltipBox[ PaneSelectorBox[{False->Cell[TextData[StyleBox["Automatic Animation", FontFamily->"Verdana"]]], True->Cell[TextData[StyleBox[ "Automatic Animation", FontFamily->"Verdana", FontColor->GrayLevel[0.5]]]]}, Dynamic[ CurrentValue["MouseOver"]]], RowBox[{"\"Animate a slider in this Demonstration by clicking the\"", AdjustmentBox[ Cell[ GraphicsData[ "CompressedBitmap", "eJzzTSzJSM1NLMlMTlRwL0osyMhMLlZwyy8CCjEzMjAwcIKwAgOI/R/IhBKc\n\/4EAyGAG0f+nTZsGwgysIJIRKsWKLAXGIHFmEpUgLADxWUAkI24jZs+eTaEt\n\IG+wQKRmzJgBlYf5lhEA30OqWA=="], "Graphics", ImageSize -> {9, 9}, ImageMargins -> 0, CellBaseline -> Baseline], BoxBaselineShift -> 0.1839080459770115, BoxMargins -> {{0., 0.}, {-0.1839080459770115, 0.1839080459770115}}], "\"button\\nnext to the slider, and then clicking the play button that \appears.\\nAnimate all controls by selecting \"", StyleBox["Autorun", FontWeight -> "Bold"], "\" from the\"", AdjustmentBox[ Cell[ GraphicsData[ "CompressedBitmap", "eJyNULENwyAQfEySIlMwTVJlCGRFsosokeNtqBmDBagoaZjAI1C8/8GUUUC6\n\57h7cQ8PvU7Pl17nUav7oj/TPH7V7b2QJAUAXBkKmCPRowxICy64bRvGGNF7\n\X8CctGoDSN4xhIDGGDhzFXwUh3/ClBKrDQPmnGXtI6u0OOd+tZBVUqy1xSaH\n\UqiK6pPe4XdEdAz6563tx/gejuORGMxJaz8mdpJn7hc="], "Graphics", ImageSize -> {10, 10}, ImageMargins -> 0, CellBaseline -> Baseline], BoxBaselineShift -> 0.1839080459770115, BoxMargins -> {{0., 0.}, {-0.1839080459770115, 0.1839080459770115}}], "\"menu.\""}], TooltipStyle->{ FontFamily -> "Verdana", FontSize -> 10, FontColor -> GrayLevel[0.35], Background -> GrayLevel[0.98]}]]]}], "ManipulateCaption", CellMargins->{{Inherited, Inherited}, {0, 0}}, Deployed->True, FontFamily->"Verdana", CellTags->"ControlSuggestions"],

    Cell[BoxData[ ButtonBox[ PaneSelectorBox[{False->Cell[BoxData[ GraphicsBox[RasterBox[CompressedData["1:eJztmjlPZFcQhZH8H5z7LzmYFGkSyAwZkEEGZEDEkrBEbAEgAjCLxS6xCbEPBnu8SAYaRoIEhPDnPqJcvm/p17THyJp3pGnVPbdu1bl1T7dGo/nm/Xffvv+qqqrqa/78wJ+/4ufn56enp4eHh7u7u9vb25ubm0KhcFNEoQiCT0Wwa4wA88khWCYhKS39eKAtCUFCSUmW4AN/96T6sY30qa1gUCk6NdiUK8Q+ij9riFZOR5YZxu5yFsNgG8zzXMTV1dX5+fmHHDnKBLbBPHLR2dnZW8vJ8X8F5pGLbJkjRxbILfZpv0U5crwauYuEpaWlmZkZPt9ayN/Y39+fKeKthZSGXPRj+WhoaHjnwHJiYsJ2mUBra2t1dTVbzc3NvI5tQZKsWLu+Znd3t+LZ2Vl2fZBSFlIyCIaHhwnIhEdSTU0Ny46ODl/cgyLKEYitbFI7JOkIu6ps12HLKtNOaXV1dTYcApaQlOWsdEbBlkkik0t5wYgRjwCrAK9H4dOrKtmRg/39/cr0j5gdctG5A+R5BiCyra3t+xcQo5PAdhkgd5+cnCRG/8HBATzL6iKISdYDaUunenp6FMe6yMpyWZVlJkxAcyZTw9cAdZCnJNDYoy7iOGfZ3dzcZMkn70KLlHbwkLwL+lGrL4U0+wloi7MwUrW1tUUsQxKwRQJzi87WzhIzHJacYnRaqiNLElCi7uJVWfniM3bkOpxCIQl2hRQEJom6KCP8iwvIQwwBYvw8dUHNpK0IlsvLywMDA3omzSeoqev7IKksdShiVqS+BmiBQHIgGHBWlvZQl5RbeN538TySKO6Ho++al8QQ7O4GGvk6wWzlBLushoPUgMc2sUOI7Wh12GVEfpgZIRddFMHyIjMaGxvp6JmVlRWUbG9vS1JsMgqnpqZYjoyMcFNI+Spa04pEg6Ds4eGhfrEp3viCqMKoYIBaZHtGXSBTbqFXFgmjdgHvY19BRTyCHOaDH6I64YN2vlHA2zJLR4HnYIwEdO/s7IzNSYJ3UVmIfRTdSPPncY3XD6ZsBi/z6MfTDy2Li6JlFVOcUvoq2QD9NHxyFBznp4MjtJCrU9pldJHePRiat7rMH+REfRLs6q0F5JmLPM/FbQglO14UXcor8NXWcwTfrJKQi34qH0jq7e0NSBTOzc0RyM8iEQa/uroK09LSAkOO/tqpBJLJUU34o6Mj4sHBQSWQ7DOjZXd2duDVF2iAqmDVVCQqGFDBfsrwj9VJauevCaipduItn5saTzKl0IkkekkSoJ0G4uELxqqVP+2yVDZe8qgPaUMo2VFqAWkMgSNJ3ZMgF/1cPuQizzAlLsIn8ejoKHFtba0eqL29HZIlvJIhqaC4vQjVJJ80/SaInJ+fJ1ZmbFlVUEHx6nJ8fMxS8+STU4FguwhYW1uLbiW1I0aVYj268WRaQTX1d1E7SWKLINqXpvApk9dlNSi7rB8CxyUjY0cYLMS4KIUtU1onQS76WD5Q1dfX55muri502nJ3d3doaIgcRIpZWFg4OTlRDEmCZSpHJGmcGhsbs1MMJ6WsMD093VcE+UbSjjqQnIoKFijujxCTmd7OX8TEG28aiHUWbVGpbFkRD8hA0sfItOmoCjZDX1kD9LdI71g5KnER5l94gb4Iwbj+FQQuejWSXATPN1HPwWd9fT3LyttVAr6P/GjoeyRbRn2VjsBFnxty0S/lo6mp6Z0Dw8dCr6hTEnJR5XUQzGyj/Pr6OuLtIqSdnp5W3q5CIFX/mKZ/LRwfHy/3OBf5TNqikIt+/eKxsbGxuLi4t7f31kL+gcUiMib/Z54BQevcRTkqh1z0W44cFcBc9HuOHK+Cuejq6kqmSsnMnZYjgFxh/2P28fHx/v6+UChcXl7+EQf46+vrpN0cXyAwA4bBNpgHC/0JwypFcA== "], {{0, 0}, {194, 22}}, {0, 255}, ColorFunction->RGBColor], ImageSize->{194, 22}, PlotRange->{{0, 194}, {0, 22}}]]], True->Cell[BoxData[ GraphicsBox[RasterBox[CompressedData["1:eJztmjtPLEcQhZH8H5z7LzlwinQjiCwIIYQQyICMRwRkPCIQCRgIeCa8At6SvetrW2aXlTYAhD/PEeW63TOzu4wxsj1HYlVdXV11qvrMLEJ88+n7bz991dXV9TU/m/z8ab+8vDw/Pz8+PjabzUaj8fDwUK/XHxLUE2A0XmEeofHPwnPLQhBQpFBqLT+crELaCgaVw9OOZGVOvRR/1hBnbtlpyxmm7nIWwSAbxPOSoFarVSqVH0uU6BDIBvFIRR/NpcS/G6WKShRHqaISxVGqSNjd3d3Y2ODzo4n8hYuLi40EH02kNaSinzrHwMDAdw4sV1dXbffy8nJkZKS7u5utoaGhvb0928JJsGzt+pxTU1OyNzc32fVGTlqcooGxuLiIQSR+KPX09LAcHx/3yT1IohgB29JmlYOSjrCrzNYOW5aZcgrr6+uz4WCwxElazopnDLaMEpE05QlDRn4IWAb8uhQ+PauWFTk4NzenSH+J7UMqqjjgrLQBSI6Ojv7wCmx4YtguA6T3tbU1bPhfXV3hZ9mdAJtgXZC2dGp6elp2qoosLc0qLTNhApozkRq+BqiDXCWGxh6riOOcZff4+Jgln9wLJXLK4cfJvcAftnooxNlPQFucxTMxMcHWyckJtgSJwRYBzC2erZ3FZjgsOcXotFRFlgTARNXlV2bFy99mRdrhFAwJsBZyEIgkVlGb8DcuQA8yGJDx81SDmsloApb7+/vcvq5J8wlyqn1vZKUlD0lMiuTXAM0QCA4IAykwcKpKThfe76t4P5RI7oejZ81TYgjWu4FCPk8wWynBmtVwoBr4kU3qEFIrWh52GZEfZpuQiqoJWFbbxuDgIBW95+DgACanp6eilBoszbBcWloaHh7GKV3FOS1JbARpr6+v9cYm+eArYoYxYQBbaHuPquDM6UK3LCcelQv83vYZlMQjiNHrOuaJPyjnCwV+W7ZTUeA6GCMG1Xl5psZkwauoI6ReijrS/Llc8+uFKZnhl3j08vRDa0dFcVrZJCeVHiUboJ+GD47B8fn5eY5QQqrOKdeminTvwdC81CX+ICbWSbCruxagZyryfhq3IbSsWE1Uyi3waOs6gierJd5DRdUv9QwxPd14EHw1uSD92qkAgjVwtayL407jV1BqWk3Ars8GSAbLpiSpKiKDvcr0vWNbqeWquSqyeDo1v34DhCeUqGXKpJwG4pGvIj2Jpk/K6RmUX/TIj9OG0LKi2ALCGAJHsqpnQSr6uXNAcmZmxnvOzs5ohE/s5eVl3Ut/f7+ebpws8SsYJxlk60tNOYnXs2Ontra2sBWZmlYZlFB+Vbm5uWGpefLJqYCwNQKYf7yVVQ4bVrLJaY3gJ9ISqqjvReVEiS099XFR/DmTV7MalDXrh8Bx0WizIh4kxLhINTk5mVM6C1LR584hFXkPBHp7e22JnBYWFog5PDyUZ3t7+/b2VjZOAixSMXISxik6slMMJyetsL6+PpOAeHNSjjw4ORUTFkjuj2ATmV/ON2LkzW8csHUWbjFVtiyJB86A0udo2lRUBpuhz6wB+i7yKxZHERWNjY1tvwKb3oNx/S0IVPRmZKkIP0+iroNPnmKWxcsVAc8jLw09R5JlrKt8BCp6b0hFv3QOvagNDB8JvSFPS+zs7JC/eB4Iz87Oxv6joyN9YQmE3d3dFS9XEFDVH9P018KVlZVOj9PIO3GL8WYV/ceAlpDr+fn5RxP5AjsJPppFa5QqKlEcUtGvJUoUgKnotxIl3gRTUa1Wk6hyIkullQggVdh/zD49PTWbzXq9fn9//3sa8BOctVvifwjEgGCQDeJBQn8AEYN5ZQ== "], {{0, 0}, {194, 22}}, {0, 255}, ColorFunction->RGBColor], ImageSize->{194, 22}, PlotRange->{{0, 194}, {0, 22}}]]]}, Dynamic[ CurrentValue["MouseOver"]]], BaseStyle->"Hyperlink", ButtonData->{ URL["http://demonstrations.wolfram.com/versions/source.jsp?id=\SingleSharePasswordProtectedVisualCryptographyViaCellularAut&version=0005"], None}, ButtonNote-> "http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut-source.nb"]], \"DemoSourceNotebookSection", CellFrame->{{0, 0}, {1, 1}}, ShowCellBracket->False, CellMargins->{{48, 48}, {28, 28}}, CellGroupingRules->{"SectionGrouping", 25}, CellFrameMargins->{{48, 48}, {6, 8}}, CellFrameColor->RGBColor[0.87, 0.87, 0.87]],

    Cell["PERMANENT CITATION", "CitationSection"],

    Cell[TextData[{ "\[NonBreakingSpace]", ButtonBox["Roman V. Yampolskiy", BaseStyle->"Hyperlink", ButtonData->{ URL["http://demonstrations.wolfram.com/author.html?author=Roman+V.+\Yampolskiy"], None}, ButtonNote-> "http://demonstrations.wolfram.com/author.html?author=Roman+V.+Yampolskiy"]}], "Author", FontColor->GrayLevel[0.6]],

    Cell[TextData[{ "\"", ButtonBox["Single-Share Password-Protected Visual Cryptography via Cellular \Automata", BaseStyle->"SiteLink", ButtonData->{ URL["http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/"], None}, ButtonNote-> "http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/"], "\"", "\[ParagraphSeparator]\[NonBreakingSpace]", ButtonBox["http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/", BaseStyle->"SiteLink", ButtonData->{ URL["http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/"], None}, ButtonNote-> "http://demonstrations.wolfram.com/\SingleSharePasswordProtectedVisualCryptographyViaCellularAut/"], "\[ParagraphSeparator]\[NonBreakingSpace]", ButtonBox["Wolfram Demonstrations Project", BaseStyle->"SiteLink", ButtonData->{ URL["http://demonstrations.wolfram.com/"], None}, ButtonNote->"http://demonstrations.wolfram.com/"], "\[ParagraphSeparator]\[NonBreakingSpace]", "Published: ", "August 2, 2011"}], "Citations"],

    Cell[TextData[{ "\[Copyright] ", StyleBox[ButtonBox["Wolfram Demonstrations Project & Contributors", BaseStyle->"Hyperlink", ButtonData->{ URL["http://demonstrations.wolfram.com/"], None}, ButtonNote->"http://demonstrations.wolfram.com/"], FontColor->GrayLevel[0.6]], "\[ThickSpace]\[ThickSpace]\[ThickSpace]|\[ThickSpace]\[ThickSpace]\\[ThickSpace]", StyleBox[ButtonBox["Terms of Use", BaseStyle->"Hyperlink", ButtonData->{ URL["http://demonstrations.wolfram.com/termsofuse.html"], None}, ButtonNote->"http://demonstrations.wolfram.com/termsofuse.html"], FontColor->GrayLevel[0.6]]}], "Text", CellFrame->{{0, 0}, {0, 0.5}}, CellMargins->{{48, 48}, {20, 50}}, CellFrameColor->GrayLevel[0.45098], FontFamily->"Verdana", FontSize->9, FontColor->GrayLevel[0.6], CellTags->"Copyright"]},Editable->False,Saveable->False,ScreenStyleEnvironment->"Working",CellInsertionPointCell->None,CellGrouping->Manual,WindowSize->{650, 650},WindowMargins->{{0, Automatic}, {Automatic, 0}},WindowElements->{ "StatusArea", "MemoryMonitor", "MagnificationPopUp", "VerticalScrollBar", "MenuBar"},WindowTitle->"Single-Share Password-Protected Visual Cryptography via \Cellular Automata",DockedCells->{},CellContext->Notebook,FrontEndVersion->"8.0 for Microsoft Windows (32-bit) (February 23, 2011)",StyleDefinitions->Notebook[{ Cell[ CellGroupData[{ Cell[ "Demonstration Styles", "Title", CellChangeTimes -> { 3.3509184553711*^9, {3.36928902713192*^9, 3.36928902738193*^9}, { 3.3754479092466917`*^9, 3.3754479095123196`*^9}, { 3.375558447161495*^9, 3.375558447395873*^9}, {3.37572892702972*^9, 3.375728927639103*^9}}], Cell[ StyleData[StyleDefinitions -> "Default.nb"]], Cell[ CellGroupData[{ Cell[ "Style Environment Names", "Section", CellChangeTimes -> {{3.369277974278112*^9, 3.369277974396138*^9}}], Cell[ StyleData[All, "Working"], ShowCellBracket -> False]}, Closed]], Cell[ CellGroupData[{ Cell[ "Notebook Options", "Section", CellChangeTimes -> {{3.374865264950812*^9, 3.374865265419568*^9}}], Cell[ " The options defined for the style below will be used at the \Notebook level. ", "Text"], Cell[ StyleData["Notebook"], Editable -> True, PageHeaders -> {{None, None, None}, {None, None, None}}, PageFooters -> {{None, None, None}, {None, None, None}}, PageHeaderLines -> {False, False}, PageFooterLines -> {False, False}, PrintingOptions -> { "FacingPages" -> False, "FirstPageFooter" -> False, "RestPagesFooter" -> False}, CellFrameLabelMargins -> 6, DefaultNewInlineCellStyle -> "InlineMath", DefaultInlineFormatType -> "DefaultTextInlineFormatType", ShowStringCharacters -> True, CacheGraphics -> False, StyleMenuListing -> None, DemonstrationSite`Private`CreateCellID -> True, DemonstrationSite`Private`TrackCellChangeTimes -> False]}, Closed]], Cell[ CellGroupData[{ Cell[ "Input/Output", "Section", CellChangeTimes -> {{3.3756313297791014`*^9, 3.3756313299509783`*^9}}], Cell[ "The cells in this section define styles used for input and output \to the kernel. Be careful when modifying, renaming, or removing these \styles, because the front end associates special meanings with these style \names. ", "Text"], Cell[ StyleData["Input"], CellMargins -> {{48, 4}, {6, 4}}], Cell[ StyleData["Output"], CellMargins -> {{48, 4}, {6, 4}}], Cell[ StyleData["DemonstrationHeader"], Deletable -> False, CellFrame -> {{0, 0}, {0, 0}}, ShowCellBracket -> False, CellMargins -> {{0, 0}, {30, 0}}, CellGroupingRules -> {"SectionGrouping", 20}, CellHorizontalScrolling -> True, CellFrameMargins -> {{0, 0}, {0, 0}}, CellFrameColor -> RGBColor[0, 0, 0], StyleMenuListing -> None, Background -> RGBColor[0, 0, 0]], Cell[ StyleData["ShowSource"], CellFrame -> {{0, 0}, {0, 1}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {8, 28}}, CellFrameMargins -> {{48, 48}, {6, 8}}, CellFrameColor -> RGBColor[0.87, 0.87, 0.87], StyleMenuListing -> None, FontFamily -> "Helvetica", FontSize -> 10, FontWeight -> "Bold", FontSlant -> "Plain", FontColor -> RGBColor[1, 0.42, 0]]}, Closed]], Cell[ CellGroupData[{ Cell[ "Basic Styles", "Section", CellChangeTimes -> {{3.34971724802035*^9, 3.34971724966638*^9}, { 3.35091840608065*^9, 3.35091840781999*^9}, {3.35091845122987*^9, 3.35091845356607*^9}, {3.35686681885432*^9, 3.35686681945788*^9}, { 3.375657418186455*^9, 3.375657418452083*^9}}], Cell[ StyleData["Hyperlink"], StyleMenuListing -> None, FontColor -> GrayLevel[0]], Cell[ StyleData["SiteLink"], StyleMenuListing -> None, ButtonStyleMenuListing -> Automatic, FontColor -> GrayLevel[0.45098], ButtonBoxOptions -> { Active -> True, Appearance -> {Automatic, None}, ButtonFunction :> (FrontEndExecute[{ NotebookLocate[#2]}]& ), ButtonNote -> ButtonData}], Cell[ StyleData["Link"], FontColor -> GrayLevel[0.45098]], Cell[ CellGroupData[{ Cell[ StyleData["DemoNotes"], CellFrame -> True, CellMargins -> {{0, 0}, {0, 0}}, CellFrameMargins -> {{48, 48}, {4, 4}}, CellFrameColor -> GrayLevel[0.99], StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 10, FontColor -> GrayLevel[0.45098], DemonstrationSite`Private`ReturnCreatesNewCell -> True], Cell[ StyleData["DemoNotes", "Printout"], CellMargins -> {{24, 0}, {0, 10}}, FontSize -> 9]}, Open]], Cell[ StyleData["SnapshotsSection"], CellFrame -> {{0, 0}, {0, 2}}, ShowCellBracket -> False, ShowGroupOpener -> True, CellMargins -> {{48, 48}, {10, 30}}, PrivateCellOptions -> {"DefaultCellGroupOpen" -> False}, CellGroupingRules -> {"SectionGrouping", 30}, CellFrameMargins -> {{8, 8}, {8, 2}}, CellFrameColor -> RGBColor[0.870588, 0.521569, 0.121569], DefaultNewCellStyle -> "SnapshotCaption", StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 12, FontColor -> GrayLevel[0.45098]], Cell[ StyleData[ "SnapshotCaption", StyleDefinitions -> StyleData["DemoNotes"]], ShowCellBracket -> False], Cell[ CellGroupData[{ Cell[ StyleData["SnapshotOutput"], ShowCellBracket -> False, CellMargins -> {{48, 10}, {5, 7}}, Evaluatable -> True, CellGroupingRules -> "InputGrouping", PageBreakWithin -> False, GroupPageBreakWithin -> False, DefaultFormatType -> DefaultInputFormatType, ShowAutoStyles -> True, "TwoByteSyntaxCharacterAutoReplacement" -> True, HyphenationOptions -> { "HyphenationCharacter" -> "\[Continuation]"}, AutoItalicWords -> {}, LanguageCategory -> "Mathematica", FormatType -> InputForm, NumberMarks -> True, LinebreakAdjustments -> {0.85, 2, 10, 0, 1}, CounterIncrements -> "Input", MenuSortingValue -> 1500, MenuCommandKey -> "9", DemonstrationSite`Private`StripStyleOnPaste -> True], Cell[ StyleData["SnapshotOuput", "Printout"], CellMargins -> {{39, 0}, {4, 6}}, LinebreakAdjustments -> {0.85, 2, 10, 1, 1}]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["DemoTitle"], Deletable -> False, ShowCellBracket -> False, CellMargins -> {{48, 48}, {22, 10}}, CellGroupingRules -> {"SectionGrouping", 20}, StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 20, FontWeight -> "Bold", FontColor -> RGBColor[0.597406, 0, 0.0527047], Background -> GrayLevel[1]], Cell[ StyleData["DemoName", "Printout"], CellMargins -> {{24, 8}, {8, 27}}, HyphenationOptions -> {"HyphenationCharacter" -> "-"}, FontSize -> 16]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["DetailsSection"], CellFrame -> {{0, 0}, {1, 0}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {8, 28}}, CellGroupingRules -> {"SectionGrouping", 25}, CellFrameMargins -> {{48, 48}, {6, 8}}, CellFrameColor -> RGBColor[0.87, 0.87, 0.87], StyleMenuListing -> None, FontFamily -> "Helvetica", FontSize -> 12, FontWeight -> "Bold", FontColor -> RGBColor[0.597406, 0, 0.0527047]], Cell[ StyleData["DetailsSection", "Printout"], CellMargins -> {{12, 0}, {0, 16}}, PageBreakBelow -> False, FontSize -> 12]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["DemoSection"], CellFrame -> {{0, 0}, {1, 0}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {8, 28}}, CellGroupingRules -> {"SectionGrouping", 30}, CellFrameMargins -> {{48, 48}, {6, 8}}, CellFrameColor -> RGBColor[0.87, 0.87, 0.87], StyleMenuListing -> None, FontFamily -> "Helvetica", FontSize -> 12, FontWeight -> "Bold", FontColor -> RGBColor[0.597406, 0, 0.0527047]], Cell[ StyleData["DemoSection", "Printout"], CellMargins -> {{12, 0}, {0, 16}}, PageBreakBelow -> False, FontSize -> 12]}, Open]], Cell[ StyleData["ManipulateSection"], CellFrame -> {{0, 0}, {0, 2}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {10, 30}}, CellGroupingRules -> {"SectionGrouping", 30}, CellFrameMargins -> {{8, 8}, {8, 2}}, CellFrameColor -> RGBColor[0.870588, 0.521569, 0.121569], StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 12], Cell[ StyleData["ManipulateCaptionSection"], CellFrame -> {{0, 0}, {0, 2}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {10, 30}}, CellGroupingRules -> {"SectionGrouping", 30}, CellFrameMargins -> {{8, 8}, {8, 2}}, CellFrameColor -> RGBColor[0.870588, 0.521569, 0.121569], DefaultNewCellStyle -> "ManipulateCaption", StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 12, FontColor -> GrayLevel[0.45098]], Cell[ StyleData["ManipulateCaption"], ShowCellBracket -> False, CellMargins -> {{48, 48}, {10, 16}}, StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 12, FontColor -> GrayLevel[0], DemonstrationSite`Private`ReturnCreatesNewCell -> True], Cell[ StyleData[ "SeeAlsoSection", StyleDefinitions -> StyleData["DemoSection"]], ShowCellBracket -> False, DefaultNewCellStyle -> "SeeAlso"], Cell[ StyleData["SeeAlso", StyleDefinitions -> StyleData["DemoNotes"]], CellDingbat -> Cell["\[FilledSmallSquare]", FontColor -> RGBColor[0.928786, 0.43122, 0.104662]], ShowCellBracket -> False, FontColor -> GrayLevel[0.45098]], Cell[ StyleData[ "RelatedLinksSection", StyleDefinitions -> StyleData["DemoSection"]], ShowCellBracket -> False, DefaultNewCellStyle -> "RelatedLinks"], Cell[ StyleData[ "RelatedLinks", StyleDefinitions -> StyleData["DemoNotes"], FontColor -> RGBColor[0.928786, 0.43122, 0.104662]], ShowCellBracket -> False, FontColor -> GrayLevel[0.45098]], Cell[ StyleData[ "CategoriesSection", StyleDefinitions -> StyleData["DemoSection"]], ShowCellBracket -> False, DefaultNewCellStyle -> "Categories"], Cell[ StyleData["Categories", StyleDefinitions -> StyleData["DemoNotes"]], ShowCellBracket -> False], Cell[ StyleData[ "AuthorSection", StyleDefinitions -> StyleData["DemoSection"]], ShowCellBracket -> False, CellMargins -> {{48, 48}, {4, 18}}, CellElementSpacings -> {"CellMinHeight" -> 3}, CellFrameMargins -> {{48, 48}, {6, 3}}, DefaultNewCellStyle -> "Author", FontSize -> 1, FontColor -> GrayLevel[1]], Cell[ StyleData[ "Author", StyleDefinitions -> StyleData["DemoNotes"], FontColor -> GrayLevel[0.64]], ShowCellBracket -> False], Cell[ StyleData[ "DetailNotes", StyleDefinitions -> StyleData["DemoNotes"]], ShowCellBracket -> False, FontColor -> GrayLevel[0]], Cell[ StyleData[ "CitationSection", StyleDefinitions -> StyleData["DemoSection"]], ShowCellBracket -> False, CellMargins -> {{48, 48}, {8, 14}}, DefaultNewCellStyle -> "Categories"], Cell[ StyleData["Citations", StyleDefinitions -> StyleData["DemoNotes"]], ShowCellBracket -> False, ParagraphSpacing -> {0, 6}], Cell[ StyleData[ "RevisionSection", StyleDefinitions -> StyleData["DemoSection"]], DefaultNewCellStyle -> "RevisionNotes"], Cell[ StyleData[ "RevisionNotes", StyleDefinitions -> StyleData["DemoNotes"]], ShowCellBracket -> False]}, Closed]], Cell[ CellGroupData[{ Cell[ "Specific Styles", "Section", CellChangeTimes -> {{3.34971724802035*^9, 3.34971724966638*^9}, { 3.35091840608065*^9, 3.35091840781999*^9}, {3.35091845122987*^9, 3.35091845356607*^9}, {3.36230868322317*^9, 3.36230868335672*^9}, { 3.36928857618576*^9, 3.36928857640452*^9}, {3.3737586217185173`*^9, 3.373758622077897*^9}}], Cell[ StyleData["InitializationSection"], CellFrame -> {{0, 0}, {0, 2}}, ShowCellBracket -> False, CellMargins -> {{48, 48}, {10, 30}}, CellGroupingRules -> {"SectionGrouping", 30}, CellFrameMargins -> {{8, 8}, {8, 2}}, CellFrameColor -> RGBColor[0.870588, 0.521569, 0.121569], StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 12, FontColor -> GrayLevel[0.45098]], Cell[ CellGroupData[{ Cell[ StyleData["AnchorBar"], ShowCellBracket -> False, CellMargins -> {{48, 44}, {3, 6}}, StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 9, FontColor -> GrayLevel[0.5]], Cell[ StyleData["AnchorBar", "Presentation"], FontSize -> 18], Cell[ StyleData["AnchorBar", "SlideShow"], StyleMenuListing -> None], Cell[ StyleData["AnchorBar", "Printout"], FontSize -> 9]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["AnchorLink"], StyleMenuListing -> None, ButtonStyleMenuListing -> Automatic, FontColor -> RGBColor[0.5, 0.5, 0.5], ButtonBoxOptions -> { Active -> True, ButtonFunction :> (FrontEndExecute[{ FrontEnd`NotebookLocate[#2]}]& ), ButtonNote -> ButtonData}], Cell[ StyleData["AnchorLink", "Printout"], FontVariations -> {"Underline" -> False}, FontColor -> GrayLevel[0]]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["GamePadStatus"], ShowCellBracket -> False, CellMargins -> {{48, 48}, {5, 5}}, StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 10], Cell[ StyleData["GamePadStatus", "Printout"], CellMargins -> {{24, 0}, {0, 10}}, FontSize -> 9]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["DemoInstruction"], CellMargins -> {{48, 48}, {5, 5}}, CellFrameLabelMargins -> 2, MenuSortingValue -> 800, MenuCommandKey -> "8", StyleMenuListing -> None, FontFamily -> "Verdana", FontSize -> 11, Background -> RGBColor[1, 0.85, 0.5], DemonstrationSite`Private`ReturnCreatesNewCell -> True], Cell[ StyleData["DemoInstruction", "Printout"], CellMargins -> {{24, 0}, {0, 10}}, Hyphenation -> True, HyphenationOptions -> {"HyphenationCharacter" -> "-"}, LineSpacing -> {1., 2, 2.}, FontSize -> 9]}, Open]], Cell[ StyleData[ "ImplementationSection", StyleDefinitions -> StyleData["DemoSection"]], Deletable -> True, DefaultNewCellStyle -> "ImplementationNotes"], Cell[ StyleData[ "ImplementationNotes", StyleDefinitions -> StyleData["DemoNotes"]]], Cell[ StyleData[ "StatusSection", StyleDefinitions -> StyleData["DemoSection"]], DefaultNewCellStyle -> "StatusNotes"], Cell[ StyleData[ "StatusNotes", StyleDefinitions -> StyleData["DemoNotes"]]], Cell[ CellGroupData[{ Cell[ StyleData["SectionGloss"], StyleMenuListing -> None, FontSize -> 0.85 Inherited, FontWeight -> "Plain", FontColor -> GrayLevel[0.6]], Cell[ StyleData["SectionGloss", "Printout"]]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["InlineFormula"], "TwoByteSyntaxCharacterAutoReplacement" -> True, HyphenationOptions -> { "HyphenationCharacter" -> "\[Continuation]"}, LanguageCategory -> "Formula", AutoSpacing -> True, ScriptLevel -> 1, AutoMultiplicationSymbol -> False, SingleLetterItalics -> False, SpanMaxSize -> 1, StyleMenuListing -> None, FontFamily -> "Courier", FontSize -> 1.05 Inherited, ButtonBoxOptions -> {Appearance -> {Automatic, None}}, FractionBoxOptions -> {BaseStyle -> {SpanMaxSize -> Automatic}}, GridBoxOptions -> { GridBoxItemSize -> { "Columns" -> {{Automatic}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, "RowsIndexed" -> {}}}], Cell[ StyleData["InlineFormula", "Printout"], CellMargins -> {{2, 0}, {0, 8}}]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["InlineOutput"], CellHorizontalScrolling -> True, "TwoByteSyntaxCharacterAutoReplacement" -> True, HyphenationOptions -> { "HyphenationCharacter" -> "\[Continuation]"}, LanguageCategory -> None, AutoMultiplicationSymbol -> False, StyleMenuListing -> None, FontFamily -> "Courier", FontSize -> 1.05 Inherited], Cell[ StyleData["InlineOutput", "Printout"], CellMargins -> {{2, 0}, {0, 8}}]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["InlineMath"], DefaultFormatType -> "DefaultTextFormatType", DefaultInlineFormatType -> "TraditionalForm", LanguageCategory -> "Formula", AutoSpacing -> True, ScriptLevel -> 1, AutoMultiplicationSymbol -> False, SingleLetterItalics -> True, SpanMaxSize -> DirectedInfinity[1], StyleMenuListing -> None, FontFamily -> "Times", FontSize -> 1.05 Inherited, ButtonBoxOptions -> {Appearance -> {Automatic, None}}, GridBoxOptions -> { GridBoxItemSize -> { "Columns" -> {{Automatic}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, "RowsIndexed" -> {}}}], Cell[ StyleData["InlineMath", "Printout"], CellMargins -> {{2, 0}, {0, 8}}]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData["TableBase"], CellMargins -> {{48, 48}, {4, 4}}, SpanMaxSize -> 1, StyleMenuListing -> None, FontFamily -> "Courier", FontSize -> 11, ButtonBoxOptions -> {Appearance -> {Automatic, None}}, GridBoxOptions -> { GridBoxAlignment -> { "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}}], Cell[ StyleData["TableBase", "Printout"], CellMargins -> {{2, 0}, {0, 8}}, FontSize -> 9]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData[ "1ColumnTableMod", StyleDefinitions -> StyleData["TableBase"]], GridBoxOptions -> {GridBoxItemSize -> {"Columns" -> { Scaled[0.04], { Scaled[0.966]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, "RowsIndexed" -> {}}, GridBoxSpacings -> {"Columns" -> { Offset[0.28], Offset[0.126], { Offset[0.77]}, Offset[0.28]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}}], Cell[ StyleData[ "1ColumnTableMod", "Printout", StyleDefinitions -> StyleData["TableBase", "Printout"]], GridBoxOptions -> {GridBoxItemSize -> {"Columns" -> { Scaled[0.078], { Scaled[0.922]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, "RowsIndexed" -> {}}, GridBoxSpacings -> {"Columns" -> { Offset[0.28], { Offset[0.56]}, Offset[0.28]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.56]}, Offset[0.2]}, "RowsIndexed" -> {}}}]}, Open]], Cell[ CellGroupData[{ Cell[ StyleData[ "2ColumnTableMod", StyleDefinitions -> StyleData["TableBase"]],