Mit6.006-problemSet00

本文探讨了组合数学中的0-1律及其应用,展示如何计算随机事件如硬币翻转和骰子投掷的期望值。此外,通过模运算分析了整数关系,并使用归纳法证明了数列求和公式。最后,提供了一个Python函数用于查找整数数组中最长升序子数组的数量。
摘要由CSDN通过智能技术生成

0-1

A = { i + ( 5 i ) , i ∈ Z 且 0 ≤ i ≤ 4 } A=\{i+\binom{5}{i},i\in\Z且0 \le i \le 4\} A={i+(i5),iZ0i4}

B = { 3 i ∣ i ∈ { 1 , 2 , 4 , 5 } } B=\{3i|i\in\{1,2,4,5\}\} B={3ii{1,2,4,5}}

化简可得

A={1,6,12,13,9}

B={3,6,12,15}

(a) A ∩ B A\cap B AB

{6,12}

(b) ∣ A ∪ B ∣ |A\cup B| AB

|{1, 3, 6, 9, 12, 13, 15}|=7

© ∣ A − B ∣ |A-B| AB

|{1, 13, 9}|=3

0-2

X为随机数,代表抛硬币3次,正面朝上的次数。

Y为随机数,代表投掷两个6面骰子,两个骰子的乘积。请计算下面期望值。

(a) E[X]

0 : 1 8 0:\frac {1} {8} 0:81 1 : 3 8 1:\frac {3} {8} 1:83 2 : 3 8 2:\frac {3} {8} 2:83 3 : 1 8 3:\frac {1} {8} 3:81

1.5

(b) E[Y]

乘积概率
11/36
22/36
32/36
43/36
52/36
64/36
82/36
91/36
102/36
124/36
152/36
161/36
182/36
202/36
242/36
251/36
302/36
361/36

(1+4+6+12+10+24+16+9+20+48+30+16+36+40+48+25+60+36)/36=12.25

©E[X+Y]

E[X+Y]=E[X]+E[Y]=13.75

0-3

A=600/6, B=60 mod 42

(a) A ≡ B ( m o d 2 ) A\equiv B(mod 2) AB(mod2)

true

(B) A ≡ B ( m o d 3 ) A\equiv B(mod 3) AB(mod3)

false

(B) A ≡ B ( m o d 4 ) A\equiv B(mod 4) AB(mod4)

false

0-4

推断法证明:当 n ≥ 1 , ∑ i = 1 n i 3 = [ n ( n + 1 ) 2 ] 2 n\ge1,\sum_{i=1}^{n}i^3=[\frac {n(n+1)}{2}]^2 n1i=1ni3=[2n(n+1)]2

当n=1时, ∑ i = 1 n i 3 = 1 , [ n ( n + 1 ) 2 ] 2 = 1 \sum_{i=1}^{n}i^3=1,[\frac {n(n+1)}{2}]^2=1 i=1ni3=1,[2n(n+1)]2=1

假设n=k时,等式成立。 ∑ i = 1 k i 3 = [ k ( k + 1 ) 2 ] 2 \sum_{i=1}^{k}i^3=[\frac {k(k+1)}{2}]^2 i=1ki3=[2k(k+1)]2

当n=k+1时,

∑ i = 1 k + 1 i 3 = ∑ i = 1 k i 3 + ( k + 1 ) 3 \sum_{i=1}^{k+1}i^3=\sum_{i=1}^{k}i^3+(k+1)^3 i=1k+1i3=i=1ki3+(k+1)3

[ ( k + 1 ) ( k + 2 ) 2 ] 2 = [ k ( k + 1 ) 2 + ( k + 1 ) ] 2 = [ k ( k + 1 ) 2 ] 2 + k ( k + 1 ) 2 + ( k + 1 ) 2 = [ k ( k + 1 ) 2 ] 2 + ( k + 1 ) 3 [\frac {(k+1)(k+2)}{2}]^2=[\frac {k(k+1)} {2}+ (k+1)]^2=[\frac {k(k+1)}{2}]^2+k(k+1)^2+(k+1)^2=[\frac {k(k+1)}{2}]^2+(k+1)^3 [2(k+1)(k+2)]2=[2k(k+1)+(k+1)]2=[2k(k+1)]2+k(k+1)2+(k+1)2=[2k(k+1)]2+(k+1)3

0-5

通过推断证实:每个连接的无向图G=(V,E),当|E|=|V|-1时,它是无环的。

解:基于k个顶点推断。基本情形:包含1个点、0条边的图是无环的。

现在对于任意连通图(有k个点、k-1条边),假设这种情形时推断为真,考虑任意连通图G(有k+1个点、k条边)。G是连通的,因此每个点至少连了1条边。因为k条边中,每个都连接两个点,G中点的平均度是 2 k / ( k + 1 ) < 2 2k/(k+1)<2 2k/(k+1)<2,因此至少存在一个点v,其度为1,连接着一个点u。移除v和连接v、u的边,得到图G’‘(有k个点、k-1条边,也是连通的)。点v不在图G的任何环中,因为环中的点,其度至少为2,因此仅当G’‘包含环时,G包含环。通过归纳假说,G’'是无环的,因此G也是。

0-6

整数数组的升序子数组,是整数数组的连续序列(值升序)。写python函数count_long_subarrays(A),接受Python数组(Tuple)A=( a 0 , a 1 , . . . , a n − 1 a_0,a_1,...,a_{n-1} a0,a1,...,an1),n>0个正数,返回A中最长升序子数组的数量,最长升序子数组的元素个数,至少比每个其它升序子数组的元素个数多。例如,如果A=(1,3,4,2,7,5,6,9,8),你的程序应该返回2,因为A中升序子数组的最大长度为3,有两个升序子数组有该数量的元素,子数组:(1,3,4)和(5,6,9)。

def count_long_subarrays(A):
    longest,length,num = 1,0,0
    last = A[0]
    for item in A:
        if item >= last:
            length += 1
            if length > longest:
                longest = length
                num = 1
            elif length == longest:
                num += 1
        else:
            length = 1
        last = item
    return num

if __name__ == "__main__":
    A = (1,3,4,2,7,5,6,9,8,9,10)
    print(count_long_subarrays(A))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值