生成函数

生成函数 (Generating Function) 的应用简单来说在于研究未知(通项)数列规律,用这种方法在给出递推式的情况下求出数列的通项。

对于一个数列 aaa,称f(x)=∑i=0naixif(x)=\sum_{i=0}^{n}{a_ix^i}f(x)=i=0∑n​ai​xi是数列 aaa 的 普通生成函数 (OGF),g(x)=∑i=0nai×xii!g(x)=\sum_{i=0}^{n}{a_i\times\frac{x^i}{i!}}g(x)=i=0∑n​ai​×i!xi​是数列 aaa 的 指数生成函数 (EGF)

我们总是认为生成函数是收敛的

本局对战的剩余时间内,所有未加上标的求和符号,上标均为 ∞∞∞

常见的普通生成函数

  1. ∀n∈N∗\forall n\in\N^*∀n∈N∗ 有∑i=0nxi=1−xn+11−x\sum_{i=0}^{n}{x^i}=\frac{1-x^{n+1}}{1-x}i=0∑n​xi=1−x1−xn+1​

证明: 设 S=∑i=0nxiS=\sum_{i=0}^{n}{x^i}S=i=0∑n​xi则xS=∑i=1n+1xixS=\sum_{i=1}^{n+1}{x^i}xS=i=1∑n+1​xi所以(x−1)S=xn+1−1S=xn+1−1x−1=1−xn+11−x\begin{aligned}(x-1)S&=x^{n+1}-1\\
S&=\frac{x^{n+1}-1}{x-1}\\
&=\frac{1-x^{n+1}}{1-x}\end{aligned}(x−1)SS​=xn+1−1=x−1xn+1−1​=1−x1−xn+1​​

得证。

  1. ∑i=0xi=11−x\sum_{i=0}^{}{x^i}=\frac{1}{1-x}i=0∑​xi=1−x1​

证明: 设S=∑i=0xiS=\sum_{i=0}{x^i}S=i=0∑​xi则xS=∑i=1xixS=\sum_{i=1}{x^i}xS=i=1∑​xi所以(1−x)S=1S=11−x\begin{aligned}(1-x)S&=1\\
S&=\frac{1}{1-x}\end{aligned}(1−x)SS​=1=1−x1​​

得证。

  1. ∑i=0(i+1)xi=(∑i=0xi)2=1(1−x)2\sum_{i=0}^{}{(i+1)x^i}=(\sum_{i=0}^{}{x^i})^2=\frac{1}{(1-x)^2}i=0∑​(i+1)xi=(i=0∑​xi)2=(1−x)21​

证明: 先证明 ∀n∈N∗\forall n\in\N^*∀n∈N∗ 有 (∑i=0nxi)2=(∑i=0n(i+1)xi)+S...(∗)(\sum_{i=0}^{n}{x^i})^2=(\sum_{i=0}^{n}{(i+1)x^i})+S\quad...(*)(i=0∑n​xi)2=(i=0∑n​(i+1)xi)+S...(∗)其中 S=(∑i=0n−1(n−i)xn+i+1)S=(\sum_{i=0}^{n-1}{(n-i)x^{n+i+1}})S=(i=0∑n−1​(n−i)xn+i+1)

设f(x)=∑i=0xif(x)=\sum_{i=0}{x^i}f(x)=i=0∑​xi [xn]f(n)[x^n]f(n)[xn]f(n) 表示多项式 f(n)f(n)f(n) 中 xnx^nxn 项之系数。则(∑i=0nxi)2=(∑i=0nxi)⋅(∑i=0nxi)=[∑i=0n⋅(∑j,i−j∈[0,i][xj][xi−j])⋅xi]+S...(1)\begin{aligned}(\sum_{i=0}^{n}{x^i})^2&=(\sum_{i=0}^{n}{x^i})·(\sum_{i=0}^{n}{x^i})\\
&=[\sum_{i=0}^{n}·(\sum_{j,i-j\in[0,i]}{[x^j][x^{i-j}]})·x^i]+S\quad...(1)\end{aligned}(i=0∑n​xi)2​=(i=0∑n​xi)⋅(i=0∑n​xi)=[i=0∑n​⋅(j,i−j∈[0,i]∑​[xj][xi−j])⋅xi]+S...(1)​

因为 i≤ni\leq ni≤n,所以有且仅有 i+1i+1i+1 个 j∈[0,n]j\in[0,n]j∈[0,n] 使 j,i−j∈[0,i]j,i-j\in[0,i]j,i−j∈[0,i]。

所以(∑i=0nxi)2=[∑i=0n(i+1)xi]+S\begin{aligned}(\sum_{i=0}^{n}{x^i})^2&=[\sum_{i=0}^{n}{(i+1)x^i}]+S\end{aligned}(i=0∑n​xi)2​=[i=0∑n​(i+1)xi]+S​

(∗)(*)(∗) 式得证。

令 n→∞n\rightarrow\inftyn→∞ 使原命题得证。

  1. ∑i=0(−x)i=11+x\sum_{i=0}^{}{(-x)^i}=\frac{1}{1+x}i=0∑​(−x)i=1+x1​

证明: 令 x=−xx=-xx=−x 并将原式代入 命题2 即可。

  1. ∀m∈N∗\forall m\in\N^*∀m∈N∗ 有 1(1−x)m=∑n=0Cn+m−1m−1xn\frac{1}{(1-x)^m}=\sum_{n=0}^{}{C_{n+m-1}^{m-1}x^n}(1−x)m1​=n=0∑​Cn+m−1m−1​xn

证明: 易知 ∀m∈N∗\forall m\in\N^*∀m∈N∗ 有 (∑i=0mxi)m=1(1−x)m(\sum_{i=0}^{m}{x^i})^m=\frac{1}{(1-x)^m}(i=0∑m​xi)m=(1−x)m1​

推广 (1)(1)(1) 式,得(∑i=0nxi)m=[∑i=0n⋅(∑{aj}∈[0,n],j∈[1,m],∑aj=i∏k=0j[xak])]+S(\sum_{i=0}^{n}{x^i})^m=[\sum_{i=0}^{n}·(\sum_{\{a_j\}\in[0,n],j\in[1,m],\sum{a_j}=i}{\prod_{k=0}^{j}{[x^{a_k}]}})]+S(i=0∑n​xi)m=[i=0∑n​⋅({aj​}∈[0,n],j∈[1,m],∑aj​=i∑​k=0∏j​[xak​])]+S

而 ∀j,k\forall j,k∀j,k 都有 [ajk]=1[a_j^k]=1[ajk​]=1,所以只需证明 有且仅有 Ci+m−1m−1C_{i+m-1}^{m-1}Ci+m−1m−1​ 组 {ai}\{a_i\}{ai​} 使 ∑aj=i\sum a_j=i∑aj​=i

考虑连续的一行 iii 个小球,你需要在 m−1m-1m−1 组相邻两个球之间各放一个隔板,将这 iii 个小球分成 mmm 份(第 jjj 份即为 aja_jaj​)。因为 aja_jaj​ 可能为零,也就是说隔板可能重叠。所以方案数为 Ci+m−1m−1C_{i+m-1}^{m-1}Ci+m−1m−1​。这样我们就证明了有且仅有 Ci+m−1m−1C_{i+m-1}^{m-1}Ci+m−1m−1​ 组 {ai}\{a_i\}{ai​} 使 ∑aj=i\sum a_j=i∑aj​=i。原命题得证。

例 1

今有 aaa 个 111 元硬币,bbb 个 222 元硬币,ccc 个 555 元硬币。求一个最小的、不能用这些硬币拼出的面值。1≤a,b,c≤1031\leq a,b,c\leq 10^31≤a,b,c≤103。



设 f(x)=∑i=0axig(x)=∑i=0bx2ih(x)=∑i=0cx5i\begin{aligned}f(x)&=\sum_{i=0}^{a}{x^i}\\
g(x)&=\sum_{i=0}^{b}{x^{2i}}\\
h(x)&=\sum_{i=0}^{c}{x^{5i}}\end{aligned}f(x)g(x)h(x)​=i=0∑a​xi=i=0∑b​x2i=i=0∑c​x5i​则 f(x)∗g(x)∗h(x)f(x)*g(x)*h(x)f(x)∗g(x)∗h(x) 各个位的系数就表示拼出这个面值的方案数,答案就是这个卷积的系数为零的最低位。

例 2

今有 A、B 两个超市,价格为 iii 的商品各有 iii 件。求从两个超市各买一个商品,恰好花 nnn 元的方案数。



生成函数f(x)=(∑i=1ixi)2=x2⋅(∑i=0(i+1)xi)2=x2(1−x)4=x2⋅∑i=0Ci+33xi\begin{aligned}f(x)&=(\sum_{i=1}{ix^i})^2\\
&=x^2·(\sum_{i=0}{(i+1)x^i})^2\\
&=\frac{x^2}{(1-x)^4}\\
&=x^2·\sum_{i=0}{C_{i+3}^{3}{x^i}}\end{aligned}f(x)​=(i=1∑​ixi)2=x2⋅(i=0∑​(i+1)xi)2=(1−x)4x2​=x2⋅i=0∑​Ci+33​xi​

所以,[xn−2](∑i=0Ci+33xi)=Cn+13[x^{n-2}](\sum_{i=0}{C_{i+3}^{3}{x^i}})=C_{n+1}^{3}[xn−2](∑i=0​Ci+33​xi)=Cn+13​。此即为答案。

例 3

求函数f(x)=∑i=0i2xif(x)=\sum_{i=0}{i^2x^i}f(x)=i=0∑​i2xi的生成函数。



由 ∀n∈N∗\forall n\in\N^*∀n∈N∗ 的 n2=∑i=1n(2i−1)n^2=\sum_{i=1}^{n}{(2i-1)}n2=i=1∑n​(2i−1)得

f(x)=∑i=0i2xi=∑i=1∑j=i(2i−1)xj=∑i=1∑j=i+1(2i−1)xj+[∑i=1(2i−1)xi]=∑i=1∑j=i+1(2i−1)xj+[2×x(1−x)2−11−x+1]\begin{aligned}f(x)&=\sum_{i=0}{i^2x^i}\\
&=\sum_{i=1}\sum_{j=i}(2i-1)x^j\\
&=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+[\sum_{i=1}(2i-1)x^i]\\
&=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+[2\times\frac{x}{(1-x)^2}-\frac{1}{1-x}+1]\end{aligned}f(x)​=i=0∑​i2xi=i=1∑​j=i∑​(2i−1)xj=i=1∑​j=i+1∑​(2i−1)xj+[i=1∑​(2i−1)xi]=i=1∑​j=i+1∑​(2i−1)xj+[2×(1−x)2x​−1−x1​+1]​

设S=2×x(1−x)2−11−x+1=x2+x(1−x)2\begin{aligned}S&=2\times\frac{x}{(1-x)^2}-\frac{1}{1-x}+1\\
&=\frac{x^2+x}{(1-x)^2}\end{aligned}S​=2×(1−x)2x​−1−x1​+1=(1−x)2x2+x​​则f(x)=∑i=1∑j=i+1(2i−1)xj+S=∑i=1(2i−1)(∑j=1xj−∑j=1ixj)+S=∑i=1(2i−1)(11−x−1−xi+1−xx−1)+S=∑i=1(2i−1)⋅xi+11−x+S=11−x(2×∑i=1i⋅xi+1−∑i=1xi+1)+S\begin{aligned}f(x)&=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+S\\
&=\sum_{i=1}(2i-1)(\sum_{j=1}x^j-\sum_{j=1}^{i}x^j)+S\\
&=\sum_{i=1}(2i-1)(\frac{1}{1-x}-1-\frac{x^{i+1}-x}{x-1})+S\\
&=\sum_{i=1}(2i-1)·\frac{x^{i+1}}{1-x}+S\\
&=\frac{1}{1-x}(2\times\sum_{i=1}i·x^{i+1}-\sum_{i=1}x^{i+1})+S\end{aligned}f(x)​=i=1∑​j=i+1∑​(2i−1)xj+S=i=1∑​(2i−1)(j=1∑​xj−j=1∑i​xj)+S=i=1∑​(2i−1)(1−x1​−1−x−1xi+1−x​)+S=i=1∑​(2i−1)⋅1−xxi+1​+S=1−x1​(2×i=1∑​i⋅xi+1−i=1∑​xi+1)+S​

而∑i=1i⋅xi+1=∑i=1(i+1)⋅xi−2∑i=1xi=1(1−x)2−1−2×x1−x=x2(1−x)2∑i=1xi+1=11−x−1−x=x21−x\begin{aligned}\sum_{i=1}{i·x^{i+1}}&=\sum_{i=1}{(i+1)·x^i}-2\sum_{i=1}x^i\\
&=\frac{1}{(1-x)^2}-1-2\times\frac{x}{1-x}\\
&=\frac{x^2}{(1-x)^2}\\
\sum_{i=1}x^{i+1}&=\frac{1}{1-x}-1-x\\
&=\frac{x^2}{1-x}\end{aligned}i=1∑​i⋅xi+1i=1∑​xi+1​=i=1∑​(i+1)⋅xi−2i=1∑​xi=(1−x)21​−1−2×1−xx​=(1−x)2x2​=1−x1​−1−x=1−xx2​​

所以f(x)=11−x(2×x2(1−x)2−x21−x)+S=x2+x(1−x)3\begin{aligned}f(x)&=\frac{1}{1-x}(2\times\frac{x^2}{(1-x)^2}-\frac{x^2}{1-x})+S\\
&=\frac{x^2+x}{(1-x)^3}\end{aligned}f(x)​=1−x1​(2×(1−x)2x2​−1−xx2​)+S=(1−x)3x2+x​​

Catalan (卡特兰)数

令 h(0)=0,h(1)=1,h(n)=∑i=0n−1h(i)⋅h(n−i−1)(n≥2)h(0)=0,h(1)=1,\\
h(n)=\sum_{i=0}^{n-1}{h(i)·h(n-i-1)}\quad(n\geq2)h(0)=0,h(1)=1,h(n)=i=0∑n−1​h(i)⋅h(n−i−1)(n≥2)则 hhh 是 Catalan 数

尝试用生成函数推导 Catalan 数的通项公式。

设 h(x)h(x)h(x) 的生成函数为 f(x)f(x)f(x)。则f(x)=∑i=0(∑j=0f(j)⋅f(i−j−1))xi+1=1+x∑i=0∑j=0i−1f(j)⋅f(i−j−1)xn−1=1+x⋅f2(x)\begin{aligned}f(x)&=\sum_{i=0}{(\sum_{j=0}f(j)·f(i-j-1))x^i}+1\\
&=1+x\sum_{i=0}{\sum_{j=0}^{i-1}{f(j)·f(i-j-1)x^{n-1}}}\\
&=1+x·f^2(x)\end{aligned}f(x)​=i=0∑​(j=0∑​f(j)⋅f(i−j−1))xi+1=1+xi=0∑​j=0∑i−1​f(j)⋅f(i−j−1)xn−1=1+x⋅f2(x)​

也就是说f(x)=1+x⋅f2(x)f(x)=1+x·f^2(x)f(x)=1+x⋅f2(x)f(x)=1±1−4x2xf(x)=\frac{1±\sqrt{1-4x}}{2x}f(x)=2x1±1−4x​​由 f(0)=1f(0)=1f(0)=1 舍去+号,所以f(x)=1−1−4x2xf(x)=\frac{1-\sqrt{1-4x}}{2x}f(x)=2x1−1−4x​​

因为 1−4x=(1−4x)12\sqrt{1-4x}=(1-4x)^{\frac12}1−4x​=(1−4x)21​,由 广义二项式定理 得1−4x=∑i=0Ci12(−4x)i\sqrt{1-4x}=\sum_{i=0}{C_{i}^{\frac12}(-4x)^i}1−4x​=i=0∑​Ci21​​(−4x)i

而Cn12=12(12−1)⋅⋅⋅(12−n+1)n!=(−1)n−1×1×1×3×⋅⋅⋅×(2n−3)2nn!=(−1)n−1(2n−2)!22n−1n!(n−1)!1−4x=−2∑i=0(2i−2)!i!(i−1)!xif(x)=∑i=0(2i)!i!(i+1)!xi\begin{aligned}C_{n}^{\frac12}&=\frac{\frac12(\frac12-1)···(\frac12-n+1)}{n!}\\
&=(-1)^{n-1}\times\frac{1\times1\times3\times···\times(2n-3)}{2^nn!}\\
&=\frac{(-1)^{n-1}(2n-2)!}{2^{2n-1}n!(n-1)!}\\
\sqrt{1-4x}&=-2\sum_{i=0}{\frac{(2i-2)!}{i!(i-1)!}x^i}\\
f(x)&=\sum_{i=0}{\frac{(2i)!}{i!(i+1)!}x^i}\end{aligned}Cn21​​1−4x​f(x)​=n!21​(21​−1)⋅⋅⋅(21​−n+1)​=(−1)n−1×2nn!1×1×3×⋅⋅⋅×(2n−3)​=22n−1n!(n−1)!(−1)n−1(2n−2)!​=−2i=0∑​i!(i−1)!(2i−2)!​xi=i=0∑​i!(i+1)!(2i)!​xi​

所以h(n)=(2n)!n!(n+1)!h(n)=\frac{(2n)!}{n!(n+1)!}h(n)=n!(n+1)!(2n)!​

常见的指数生成函数

  1. ∑i=0xii!=ex\sum_{i=0}{\frac{x^i}{i!}}=e^xi=0∑​i!xi​=ex
  2. 偶数项求和。∑i=0x2i(2i)!=ex+e−x2\sum_{i=0}{\frac{x^{2i}}{(2i)!}}=\frac{e^x+e^{-x}}2i=0∑​(2i)!x2i​=2ex+e−x​
  3. 奇数项求和。∑i=0x2i+1(2i+1)!=ex−e−x2\sum_{i=0}{\frac{x^{2i+1}}{(2i+1)!}}=\frac{e^x-e^{-x}}2i=0∑​(2i+1)!x2i+1​=2ex−e−x​

可以发现,它们与 OGF 最大的区别在于阶乘。所以,EGF 常用于解决与排列有关的问题。

例 4

用 1,2,3,41,2,3,41,2,3,4 给 nnn 个方块染色,求 1,21,21,2 颜色染的方块数为偶数的方案数。

写出 1,21,21,2 的生成函数f(x)=∑i=0x2i(2i)!f(x)=\sum_{i=0}{\frac{x^{2i}}{(2i)!}}f(x)=i=0∑​(2i)!x2i​

3,43,43,4 的生成函数g(x)=∑i=0xii!g(x)=\sum_{i=0}{\frac{x^i}{i!}}g(x)=i=0∑​i!xi​

则h(x)=f2(x)∗g2(x)=(∑i=0x2i(2i)!)2⋅(∑i=0xii!)2=(ex+e−x2)2⋅e2x=e4x+2e2x+14=14+∑i=0(4i+2n+14)xii!\begin{aligned}h(x)&=f^2(x)*g^2(x)\\
&=(\sum_{i=0}{\frac{x^{2i}}{(2i)!}})^2·(\sum_{i=0}{\frac{x^i}{i!}})^2\\
&=(\frac{e^x+e^{-x}}2)^2·e^{2x}\\
&=\frac{e^{4x}+2e^{2x}+1}4\\
&=\frac14+\sum_{i=0}(\frac{4^i+2^{n+1}}4)\frac{x^{i}}{i!}\end{aligned}h(x)​=f2(x)∗g2(x)=(i=0∑​(2i)!x2i​)2⋅(i=0∑​i!xi​)2=(2ex+e−x​)2⋅e2x=4e4x+2e2x+1​=41​+i=0∑​(44i+2n+1​)i!xi​​

所以[xn]h(x)=4n+2n+14[x^n]h(x)=\frac{4^n+2^{n+1}}4[xn]h(x)=44n+2n+1​

(To Be Continued)

生成函数(TBC)的更多相关文章

  1. [CodeForces - 712D]Memory and Scores (DP 或者 生成函数)

    题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高.  ( ...

  2. HDU 1171 Big Event in HDU --暴力+生成函数

    题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小. 解法:先跑一次生成函数,c[n]表示组成总值为n的方 ...

  3. HDU 2189 悼念512汶川大地震遇难同胞――来生一起走 --生成函数

    这题跟上两题也差不多. 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题.用生 ...

  4. HDU 1085 Holding Bin-Laden Captive --生成函数第一题

    生成函数题. 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少. 解法:写出生成函数: 然后求每项的系数即可. 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8 ...

  5. BZOJ3028 食物 (生成函数)

    首先 1+x+x^2+x^3+...+x^∞=1/(1-x) 对于题目中的几种食物写出生成函数 (对于a*x^b , a表示方案数 x表示食物,b表示该种食物的个数) f(1)=1+x^2+x^4+. ...

  6. C# 条形码 生成函数 (Code 128 标准

    C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某 ...

  7. [原创]oracle 顺序号生成函数。仿Sequence

    问题提出自项目中的老代码:一个Bill表,存储所有的表单信息,比如:员工入职单,离职单等等.(别喷,我知道要分多个表.但领导的意愿你是没办法违背的)表单的单据号是以四个字母+年月日+数字顺序号来表示. ...

  8. tbr tbn tbc

    http://tech.bobgo.net/?m=201004 因为最近的工作需要从MP4视频中提取一些关键帧,要了解如何将视频的时间点转换为对应的帧号,所以查阅了一些关于视频编解码以及时间同步方式的 ...

  9. FFT与多项式、生成函数题目泛做

    题目1 COGS 很强的乘法问题 高精度乘法用FFT加速 #include <cstdlib> #include <iostream> #include <algorit ...

随机推荐

  1. Python3 爬虫之 Scrapy 框架安装配置(一)

    博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的爬虫实现过程请参照本人的另一篇博客:Python3 爬虫之 Scr ...

  2. .netCore+Vue 搭建的简捷开发框架 (3)-- Services层实现

    继续交作业: 上一篇作业中我们实现了 Repository仓储层的应用.并为我们的框架引入了EFCore 详见: .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使 ...

  3. 如何编写出高质量的 equals 和 hashcode 方法?

    什么是 equals 和 hashcode 方法? 这要从 Object 类开始说起,我们知道 Object 类是 Java 的超类,每个类都直接或者间接的继承了 Object 类,在 Object ...

  4. C++:Memory Management

    浅谈C++内存管理 new和delete 在C++中,我们习惯用new申请堆中的内存,配套地,使用delete释放内存. class LiF; LiF* lif = new LiF(); // 分配内 ...

  5. Centos安装PhantomJS

    1.下载PhantomJS [root@liuge ~]# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-l ...

  6. Hive窗口函数最全案例详解

    语法: 分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用分析函数: 聚合类 avg().sum().max(). ...

  7. idea创建javaweb原生项目

    使用idea创建javaweb项目 idea还是写框架项目比较爽,原生的javaweb项目不是特别方便,这篇文章就是记录一下创建的过程 图较多注意流量 选择创建web项目 配置tomcat服务器 配置 ...

  8. CDH高可用hadoop集群性能配置

    1.HDFS的高可用配置 dfs.namenode.edits.dir (NameNode 编辑目录) : 写入 NameNode 编辑的本地文件系统上的目录.未指定将存放在namenode数据目录中 ...

  9. telnet命令问题解决-bash: telnet: command not found

    root@cClient:/]#telnet cMaster 44444 bash: telnet: command not found -----------解决办法------------ 解决方 ...

  10. laravel基础操作手册

    laravel基础操作手册 1.路由配置 测试配置路由: Route::get('/test', 'TestController@index'); 2.控制器书写 3.模型文件 4.增加扩展类文件 L ...