[infostudents] huhu

  • From: 0x4655 <ox4655@xxxxxxxxxxx>
  • To: infostudents@xxxxxxxxxxxxx
  • Date: Mon, 22 Dec 2008 00:09:07 +0100

hier mal mein kram zur 1. das programm ist in python geschrieben

mfg ivo
#!/usr/bin/env python
#
#        
#       
#

import os
import sys
from sys import argv
import Numeric
def main():
        print "Gegeben ist p mit:\n"
        #p=[30,35,15,5,10,20,25]
        p=[6,10,4,13,5,25,8]
        print p
        A=["dump","A_1","A_2","A_3","A_4","A_5","A_6"]
        print "\nErzeuge m und s\n"
        m = Numeric.zeros([len(p),len(p)],Numeric.Int)
        s = Numeric.zeros([len(p),len(p)],Numeric.Int)
        print "m ist\n"
        print m
        print "\ns ist\n"
        print s
        
        n=len(p)
        print "p hat die Laenge: %ii\n" %(n)
        for i in range(1,n,1):  
                m[i][i]=0
        print "Setze in m m[i][i]=0 fuer alle i von 1 bis ni\n"
        for l in range(2,n,1):
                print "Zustand der Matrix m:\n"
                print m
                print "\nl=%i\n" %l
                print "Berechne n-l+1=%i\n" %(n-l+1)
        
                for i in range(1,n-l+1,1):
                        print ""
                        print "i=%i\n" %(i)
                        j=i+l-1
                        print "j=i+l-1=%i\n" %(j)       
                        print "Setze m[%i][%i]=infinity(99999999)\n"%(i,j)
                        m[i][j] = 99999999 
                        for k in range(i,j-1+1,1):
                                q=m[i][j]
                                print "Setze q=%i" % (q)
                                
list=[m[i][j],p[i-1]*p[k]*p[j]+m[i][k]+m[k+1][j]]
                                m[i][j]=getmin(list)
                                print "Berechne Minimum:"
                                print "m[%i][%i]=min{%i,%i}"  % 
(i,j,list[0],list[1])
                                print "das Minimum ist %i \n" % (m[i][j])
                                if (m[i][j]<q):
                                        print "Ist m[%i][%i] kleiner als i %i? 
Ja"  % (i,j,q)
                                        print "Setze s[%i][%i]=%i "  % (i,j,k)
                                        s[i][j]=k
        print "Das Ergebnis fuer m ist:\n"
        print m
        print "\nDas Ergebnis fuer s ist:\n"
        print s
        print "\nBerechne optimale Klammerung\n"
        
        print "Rufe opt_params(A,s,%i,%i) auf\n"%(1,n-1)
        res1 = opt_params(A,s,1,n-1)
        print "Die optimale Klammerung ist\n:"
        print res1
        print "Ende\n"

def opt_params(A,s,i,j):
        print "A ist:"
        print A[1:]
        print "i=%i,j=%i\n" % (i,j)
        if i<j:
                print "i<j\n"
                
                print "s[%i,%i]=%i"%(i,j,s[i][j])
                print "x=opt_params(A,s,%i,s[%i,%i])\n"%(i,i,j)
                x=opt_params(A,s,i,s[i,j])
                print "y=opt_params(A,s,s[%i,%i]+1,%i)\n"%(i,j,j)
                y=opt_params(A,s,s[i,j]+1,j)
                res=[x,y]
                
                print "\n Der Aufruf opt_params(A,s,%i,%i]) gibt:"%(i,j)
                print res
                print "zurueck\n"
                return res
        else:
                
                print "\n Der Aufruf opt_params(A,s,%i,%i]) ist der Basisfall. 
Der Aufruf gibt:"%(i,j)
                print A[i]
                print "zurueck\n"
                return A[i]
                
def getmin(list):
        p=list[0]
        for el in list:
                if el < p:
                        p=el
        return p                

# Program entry point
if __name__ == "__main__":
        main()

Other related posts: