Es ist

*
A  =  {ϵ,1,2,3,11, 12,13,21,22, 23,31,32, 33,...}

– die drei Pünktchen sind wichtig, die Sternmenge ist natürlich unendlich, und wir haben nur ihre kürzesten Element aufgezählt.

Demgebenüber ist

<ignored>P< /ignored>℘(A ) = {∅,{1},{2 },{3},{1, 2},{1,3}, {2,3},{1,2, 3}}

– hier gibts keine Pünktchen, Potenzmengen endlicher Mengen sind zwar typischerweise groß, aber endlich. Wenn ihr aus der Hüfte sagen könnt, warum hier kein {3,1} oder {3,3} steht, seid ihr dem Grundverständnis von Mengen schon erheblich näher gekommen.

Beachtet, dass ℘(A) an sich überhaupt nichts mit A* zu tun hat – diese Aufgabe entsprang der Beobachtung, dass viele Studierende Probleme hatten, die beiden Begriff auseinanderzuhalten.

Hier ist noch ein (nicht allzu effizientes) Programm zur Berechnung von Sternmengen. Von der Kommandozeile aus aufgerufen nimmt es im ersten Argument die Maximallänge der zu erzeugenden Wörter, alle folgenden Argumente definieren die Menge, auf die der Stern angewandt werden soll.

def computeKleeneStar(aSet, maxLen):
  """returns the star set for the elements of the iterable aSet with
  all words up to maxLen (exclusively).  The elements obviously
  have to support concatenation.  The strategy is a straight
  implementation of the recursive definition of the Kleene star.
  """
  if maxLen==0:
    return [""]
  else:
    shorterSet = computeKleeneStar(aSet, maxLen-1)
    return [a+w
      for a in aSet
        for w in shorterSet if len(w)==maxLen-1]+shorterSet

if __name__=="__main__":
  import sys
  starSet = computeKleeneStar(sys.argv[2:], int(sys.argv[1]))
  starSet.sort(lambda a,b: cmp(len(a), len(b)) or cmp(a, b))
  print starSet