本周的作业较少,只有一个编程任务hw2.作业比较简单,如果大学学习过矩阵代数的话,基本上没有什么问题,不过要注意的一点是基2的Span的求法。
基2空间上,在所有基向量中取任意个数个,叠加组合就得到了Span。但是如何取任意个呢?下面给出几种方法。
一种方法是对于任意可能的个数,利用Python中的排列组合module生成对应于此个数的所有排列,即得到Span。感兴趣的话可以百度一下。这种方法概念较为清晰,但需要对Python的库较为了解。
第二种方法,利用了从n个元素中任选任意个的方法只有2^n个的排列组合知识。具体来说,就是对于任意从0到2^n-1的整数,使用bin()函数得到其二进制表示,对应位为1即代表选中此基向量。这种方法稍微Smart一些。但过程较为冗杂。
第三种,就是下面程序给出的方法,一行语句就可以完成运算,原理和上一种方法相同,就不再赘述。但要注意结果为0的情况下要单独考虑。
其他的向量运算都比较简单,最后几道判断是否为向量空间的问题,只需要牢记向量空间三特征(包含0,加减和向量乘法组合仍在空间内)就不会出错。
作业代码如下,模版中注释部分给出了验证范例。
# version code 761
# Please fill out this stencil and submit using the provided submission script.
from vec import Vec
from GF2 import one
## Problem 1
def vec_select(veclist, k):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_select([v1, v2, v3, v4], 'a') == [Vec(D,{'b': 1}), Vec(D,{'b': 2})]
True
'''
return [x for x in veclist if x[k]==0]
def vec_sum(veclist, D):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_sum([v1, v2, v3, v4], D) == Vec(D, {'b': 13, 'a': 11})
True
'''
return sum(veclist) if len(veclist)!=0 else Vec(D,{})
def vec_select_sum(veclist, k, D):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_select_sum([v1, v2, v3, v4], 'a', D) == Vec(D, {'b': 3})
True
'''
return vec_sum(vec_select(veclist,k),D)
## Problem 2
def scale_vecs(vecdict):
'''
>>> v1 = Vec({1,2,3}, {2: 9})
>>> v2 = Vec({1,2,4}, {1: 1, 2: 2, 4: 8})
>>> scale_vecs({3: v1, 5: v2}) == [Vec({1,2,3},{2: 3.0}), Vec({1,2,4},{1: 0.2, 2: 0.4, 4: 1.6})]
True
'''
return [y/x for (x,y) in vecdict.items()]
## Problem 3
def GF2_span(D, L):
'''
>>> from GF2 import one
>>> D = {'a', 'b', 'c'}
>>> L = [Vec(D, {'a': one, 'c': one}), Vec(D, {'b': one})]
>>> len(GF2_span(D, L))
4
>>> Vec(D, {}) in GF2_span(D, L)
True
>>> Vec(D, {'b': one}) in GF2_span(D, L)
True
>>> Vec(D, {'a':one, 'c':one}) in GF2_span(D, L)
True
>>> Vec(D, {x:one for x in D}) in GF2_span(D, L)
True
'''
if len(L)==0:return []
maxind=2**len(L)-1
res=[sum([L[j] for j in range(len(L)) if i//(2**j)%2]) for i in range(maxind+1)]
res.append(Vec(D,{}))
del res[0]
return res
## Problem 4
# Answer with a boolean, please.
is_it_a_vector_space_1 = True
is_it_a_vector_space_2 = False
## Problem 5
is_it_a_vector_space_3 = True
is_it_a_vector_space_4 = False
## Problem 6
is_it_a_vector_space_5 = True
is_it_a_vector_space_6 = False
分享到:
相关推荐
Philip N. Klein所著,网上有以此书为教材的免费课程。为了节省可爱的CSDN同学们的时间,我把这个公开...课程视频地址:https://cs.brown.edu/video/channels/coding-matrix-fall-2014/ PS:大的是主文件,小的是勘误。
布朗大学Philip Klein教授授课,讲述矩阵分析的应用,用python进行编程。
著名在线课程的配套教材,亚马逊同类书籍销量第一
Motion Vector Coding in the HEVC Standard.帧间运动估计一篇专业论文。
This book is intended for those new to the Arduino and computer coding. and looking to gain the skills to write microcontroller programs that can act on given inputs and operate electromechanical ...
Coding The Coding Interview 6th Edition PDF, walks through Data Structures and Algorithms problems as well as answers.
Coding Theory The Essentials
Cracking the Coding Interview(6th) 英文扫描版 <br/>Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to ...
Video coding using the H.264 MPEG-4 AVC compression standard
[Leanpub] The Coding Dojo Handbook (英文版) [Leanpub] The Coding Dojo Handbook (E-Book) ☆ 图书概要:☆ This book is full of practical advice and ideas for practicing skills such as test-driven ...
issues facing the integration of network coding in the current network stack. We evaluate our design on a 20-node wireless network, and discuss the results of the first testbed deployment of wireless ...
The book attempts to provide an overview of design principles and major space-time coding techniques starting from MIMO system information theory capacity bounds and channel models, while endeavoring ...
What You’ll Learn Understand basic principles of technology, and ...Create games from scratch, where you interactively play against the program. Gain an introduction to Artificial Intelligence (AI)
In this paper, we study the Space-Time (ST) cooperative communications aided by a fixed relay, forwarding network coded bits to the destination. We present the performance analysis in terms of outage...
Cracking the Coding Interview(6th).pdf 程序员面试经典书籍 <br/>Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling ...
Comparison of the Coding Efficiency of Video Coding Standard
Cracking the Coding Interview
Now in the 5th edition, Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software ...