精华内容
下载资源
问答
  • Polya

    万次阅读 2017-07-18 21:19:23
    Polya 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! Redfield-Polya (Pólya enumeration theorem,简称PET)定理是组合数学理论中最重要的定理之一。 其提出者波里亚在...

    Polya

     编辑

    本词条缺少 名片图,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧!
    Redfield-Polya (Pólya enumeration theorem,简称PET)定理是 组合数学理论中最重要的定理之一。
    其提出者波里亚在众多数学的分支:函数论、变分学、概率论、数论、组合数学以及计算数学和应用数学领域中,都颇有建树,他共发表了200多篇著名论文,以他的名字命名的Polya计数定理,则是近代组合数学的重要工具。波里亚还是杰出的数学教育家,有著丰富的数学教育思想和精湛的数学教学艺术,他对数学思维一般规律的研究,堪称是对人类思想宝库的特殊贡献。
     

    中文名

    波利亚定理

    外文名

    polya定理

    提出者

    George Polya

    应用学科

    组合数学

    适用领域范围

    近代组合数学

    Polya定理(数学)

    编辑
    Redfield-Polya (Pólya enumeration theorem,简称PET)定理是 组合数学理论中最重要的定理之一.自从 1927 年 Redfield 首次运用 group reduction function 概念,现在称之为群的循环指标(circle index of a group),至今 60 多年来,他在许多实际计数问题上得到了广泛的应用,它以 置换群为理论基础,与生成函数有机地结合在一起,揭示了一类具有组合意义的计数的规律性.
    抽象地说在一集合内,定义了一个等价关系,人们往往关心由这个等价关系所决定的等价类的数目,Refield-Polya 理论就是为解决这类问题而发展起来的复杂计数理论.

    1 置换群的基本概念

    置换的定义:
    置换即[1,n]到自身的1-1变换: [1,n] → [1,n],
    p: i →
      
    , (
      
      
    , i ≠ j)
    于是,
      
    是[1,n] 的一个全排列。称此置换为n阶置换,记为
     
    n阶置换共有n!个。
    置换的乘法运算:
    先看一个例子,设:
     
     
    定义
     
     
    这表示先作p1的置换,再作p2的置换:
     
     
     
     
     
    类似的有
     
     
    于是我们定义乘法如下:
     
     
     
    定理 [1,n]上所有的置换按上述乘法构成一个群。即满足
    1)封闭性
    2)结合律
    3)有单位元
     
    4)有逆元
     
    我们称此群为n个文字的对称群,记为
     
    定义:Sn的任意一个子群称为置换群
    定理: 任一n阶有限群同构于一个n个文字的置换群
    设G={a1,a2,…,an},指定G中任一元ai, 任意aj∈G,
    Pi:aj → aj ai ,则Pi是G上的一个置换。
     
    令P={Pi|ai∈G},则P≈G
    1-1映射:
     

    2 Polya定理

      
    是n个对象的一个置换群, 用m种颜色染图这n个对象,则不同的染色方案数为:
     
    其中
      
      
      
    的循环节数
    证明
      
    是N中元素所有染色方案的集合,则有
      
    。对于
      
    中任意一个置换
      
    ,由于它作用于N中的元素,从而也引起了对于
      
    中涂色方案的置换P。记所有P构成的群为G,则
     
     
     
    设是中的一个置换,且
     
    {
      
    个轮换}
    如果属于同一轮换的的数字被涂上同样的颜色,这样的涂色方案在P的作用下是不变的,所以它属于P的不变元素。另一方面,如果有一种涂色方案使得得
      
    某个轮换中出现了不同的涂色,则在该轮换中必有两个相连的数字具有不同的颜色,于是在P的作用下必得到不同的涂色方案,这就证明了在P作用下不变的涂色方案数
      
    应该等于对
      
    的同一轮换涂同色的方案数
      
    ,即,将将此式代 [1]    入Burnside 引理即得结论。 [1]  
    应用(正多面体的刚体旋转问题)
    甲烷CH4的支链结构为正四面体,若4个H键用H,CL,CH3,C2H5之一取代,问有几种不同的化学结构?
    解:
    问题相当于对正四面体的4个顶点用4种颜色着色,求不同的方案数目,使正四面体v1,v2,v3,v4重合的刚体运动有两类,一类是绕过顶点的中心线XX'旋转120度,240度;另一类是绕过v1v2,v3v4中点的连线yy’旋转180度,如下图旋转群G的元素为:
     
    (v1)(v2)(v3)(v4),(v1)(v2v3v4),(v1)(v4v3v2),(v2)(v1v3v4),
    (v2)(v4v3v1),(v3)(v1v2v4),(v3)(v4v2v1),(v4)(v1v2v3),
    (v4)(v3v2v1),(v1v2)(v3v4),(v1v3)(v2v4),(v1v4)(v2v3),
    故不同的化学结构数目为:
     

    PolyA(多聚腺苷酸)

    编辑

    解释

    多聚腺苷酸化

    是指多聚腺苷酸与信使RNA(mRNA)分子的共价链结。在 蛋白质生物合成的过程中,这是产生准备作 翻译的成熟mRNA的方式的一部份。在真核生物中,多聚腺苷酸化是一种机制,令mRNA分子于它们的3'端中断。多聚腺苷酸尾(或聚A尾)保护mRNA,免受 核酸外切酶攻击,并且对转录终结、将mRNA从细胞核输出及进行翻译都十分重要。一些原核生物的mRNA都会被多聚腺苷酸化,但多聚腺苷酸尾的功能则与 真核生物有所不同。
    当脱氧核糖核酸(DNA)在细胞核内转录成核糖核酸(RNA)的过程中及完成后,多聚腺苷酸化就会出现。当转录停止后,mRNA链会由核酸外切酶及RNA 聚合酶切开。切开位点的附近有着AAUAAA序列。当mRNA被切开后,会加入50-250个腺苷到切开位点的3'端上。这个反应是由多聚 腺苷酸聚合酶参与完成的。

    多聚腺苷酸化过程

    1,切割及多聚 腺苷酸化特异因子(CPSF)及切割活化因子(CstF)两个蛋白质复合物会开始与末端的RNA聚合酶Ⅱ结合。
    2,当RNA聚合酶Ⅱ前进时经过多聚腺苷酸化信号序列的CPSF,及CstF转移至新的mRNA前体,CPSF会与AAUAAA序列结合,而CstF会与其后3的GU序列或充满U的序列结合。
    4,CPSF及CstF会在约AAUAAA序列后35个核苷启动切割。多聚腺苷酸 聚合酶(PAP)会立即展开编写多聚腺苷酸尾。细胞核内的多聚腺苷酸结合蛋白(PABPN1)会立即与新的多聚腺苷酸序列结合。
    5,CPSF会开始游离,而PAP会继续多聚腺苷酸化及编写约50-250个核苷(视乎生物的品种)的腺苷尾。PABPN1会成为一种分子尺,界定 多聚腺苷酸化何时停止。 PAP会开始游离,及PABPN1继续维持结合状态。连同5'端帽,这相信是可以帮助mRNA运离细胞核。

    内部连结

    相关的蛋白质及复合物:
    RNA聚合酶
    RNA聚合酶Ⅱ
    相关的化合物有:
    腺苷
    加A反应
    展开全文
  • polya

    2017-11-27 22:43:00
    17青岛现场赛polya计数 转自https://www.cnblogs.com/Just--Do--It/p/7806923.html 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 #define LLL __int128 5...

     17青岛现场赛polya计数

    转自https://www.cnblogs.com/Just--Do--It/p/7806923.html

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 #define LLL __int128
     5 const int maxn = 1010;
     6 int tr[4][30] = {
     7     {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
     8     {6, 3, 0, 7, 4, 1, 8, 5, 2, 15, 12, 9, 16, 13, 10, 17, 14, 11, 27, 28, 29, 18, 19, 20, 21, 22, 23, 24, 25, 26},
     9     {15, 16, 17, 12, 13, 14, 9, 10, 11, 6, 7, 8, 3, 4, 5, 0, 1, 2, 26, 25, 24, 23, 22, 21, 20, 19, 18, 29, 28, 27},
    10     {0, 1, 17, 3, 4, 14, 6, 7, 11, 9, 10, 8, 12, 13, 5, 15, 16, 2, 18, 19, 24, 23, 22, 21, 20, 25, 26, 27, 28, 29}
    11 };
    12 int temp[30];
    13 int ans[maxn * 100][30];
    14 int cnt;
    15 int vis[30];
    16 int C[maxn];
    17 void dfs(int cur){
    18     for(int k = 1; k <= 3; k++){
    19         for(int i = 0; i < 30; i++){
    20             temp[i] = ans[cur][tr[k][i]];
    21         }
    22         int flag = 1;
    23         for(int i = 0; i <= cnt; i++){
    24             int vis = 1;
    25             for(int j = 0; j < 30; j++){
    26                 if(ans[i][j] != temp[j]) vis = 0;
    27                 if(!vis) break;
    28             }
    29             if(vis){
    30                 flag = 0;
    31                 break;
    32             }
    33         }
    34         if(flag){
    35             cnt++;
    36             for(int i = 0; i < 30; i++){
    37                 ans[cnt][i] = temp[i];
    38             }
    39             dfs(cnt);
    40         }
    41     }
    42 }
    43 void init(){
    44     cnt = 0;
    45     for(int i = 0; i < 30; i++) ans[0][i] = tr[0][i];
    46     dfs(0);
    47     for(int i = 0; i <= cnt; i++){
    48         int cir = 0;
    49         memset(vis, 0, sizeof(vis));
    50         for(int j = 0; j < 30; j++){
    51             if(!vis[j]){
    52                 vis[j] = 1;
    53                 int u = ans[i][j];
    54                 while(!vis[u]){
    55                     vis[u] = 1;
    56                     u = ans[i][u];
    57                 }
    58                 cir++;
    59             }
    60         }
    61         C[cir]++;
    62     }
    63     //cout<<cnt + 1<<endl;
    64     //for(int i = 0; i < 32; i++) if(C[i]) printf("C[%d] = %d\n", i, C[i]);
    65 }
    66 LLL quickpow(LLL a, LLL b, LLL mod){
    67     LLL temp = a % mod, res = 1;
    68     while(b){
    69         if(b & 1) res = res * temp % mod;
    70         b >>= 1;
    71         temp = temp * temp % mod;
    72     }
    73     return res;
    74 }
    75 int main(){
    76     init();
    77     LL c, p;
    78     int t;
    79     scanf("%d", &t);
    80     while(t--){
    81         scanf("%lld %lld", &c, &p);
    82         LLL tot = cnt + 1;
    83         LLL sum = 0;
    84         LLL mod = p * tot;
    85         for(int i = 0; i < 32; i++){
    86             if(C[i]){
    87                 sum = sum + quickpow(c, i, mod) * C[i] % mod;
    88                 sum %= mod;
    89             }
    90         }
    91         printf("%lld\n", (LL)(sum / tot));
    92     }
    93 }
    View Code

     

     

    DIY Cube

     HDU - 3547  

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 const int maxn = 1010;
     5 int tr[4][8] = {
     6     {0, 1, 2, 3, 4, 5, 6, 7},
     7     {4, 5, 0, 1, 6, 7, 2, 3},
     8     {2, 0, 3, 1, 6, 4, 7, 5},
     9     {1, 5, 3, 7, 0, 4, 2, 6}
    10 };
    11 int temp[10];
    12 int ans[maxn * 100][10];
    13 int cnt;
    14 int vis[10];
    15 int C[maxn];
    16 void dfs(int cur){
    17     for(int k = 1; k <= 3; k++){
    18         for(int i = 0; i < 8; i++){
    19             temp[i] = ans[cur][tr[k][i]];
    20         }
    21         int flag = 1;
    22         for(int i = 0; i <= cnt; i++){
    23             int vis = 1;
    24             for(int j = 0; j < 8; j++){
    25                 if(ans[i][j] != temp[j]) vis = 0;
    26                 if(!vis) break;
    27             }
    28             if(vis){
    29                 flag = 0;
    30                 break;
    31             }
    32         }
    33         if(flag){
    34             cnt++;
    35             for(int i = 0; i < 8; i++){
    36                 ans[cnt][i] = temp[i];
    37             }
    38             dfs(cnt);
    39         }
    40     }
    41 }
    42 int main(){
    43     cnt = 0;
    44     for(int i = 0; i < 8; i++) ans[0][i] = tr[0][i];
    45     dfs(0);
    46     for(int i = 0; i <= cnt; i++){
    47         int cir = 0;
    48         memset(vis, 0, sizeof(vis));
    49         for(int j = 0; j < 8; j++){
    50             if(!vis[j]){
    51                 vis[j] = 1;
    52                 int u = ans[i][j];
    53                 while(!vis[u]){
    54                     vis[u] = 1;
    55                     u = ans[i][u];
    56                 }
    57                 cir++;
    58             }
    59         }
    60         C[cir]++;
    61     }
    62     for(int i = 0; i < 10; i++) if(C[i]) printf("C[%d] = %d\n", i, C[i]);
    63     cout<<cnt + 1<<endl;
    64 }
    暴搜
     1 /*************************************************************************
     2     > File Name: Main.java
     3     > Author: yijiull
     4     > Mail: 1147161372@qq.com 
     5     > Created Time: 2017年11月08日 星期三 22时35分25秒
     6  ************************************************************************/
     7 import java.math.*;
     8 import java.util.*;
     9 import java.io.*;
    10 public class Main{
    11     public static void main(String argsp[]){
    12         Scanner cin = new Scanner(System.in);
    13         int t = cin.nextInt();
    14         BigInteger m = new BigInteger("1000000000000000");
    15         for(int k = 1; k <= t; k++){
    16             BigInteger c = cin.nextBigInteger();
    17             BigInteger ans = BigInteger.ZERO;
    18             ans = ans.add(c.pow(2).multiply(BigInteger.valueOf(6)));
    19             ans = ans.add(c.pow(4).multiply(BigInteger.valueOf(17)));
    20             ans = ans.add(c.pow(8));
    21             ans = ans.divide(BigInteger.valueOf(24));
    22             System.out.print("Case " + k + ": ");
    23             if(ans.compareTo(m) > 0){
    24                 ans = ans.mod(m);
    25                 for(int i = ans.toString().length(); i < 15; i++){
    26                     System.out.print(0);
    27                 }
    28             }
    29             System.out.println(ans);
    30 
    31         }
    32     }
    33 }
    View Code

     

    转载于:https://www.cnblogs.com/yijiull/p/7906549.html

    展开全文
  • polya字体

    2019-10-22 20:24:20
    polya字体是一款用于网状设计方面的字体
  • Pólya原理是组合数学中,用来计算全部互异的组合状态的个数的一个十分高效、简便的工具。下面,我就向大家介绍一下什么是Pólya原理以及它的应用。请先看下面这道例题:
  • polya计数

    2019-10-08 00:31:02
    polya计数 总结 问题: 同构计数 bunside定理: 在置换g下染色方案不变数的平均值;公式:\(\frac{1}{|G|}\sum_{g\in G}C(g)\), 其中\(C(g)\) 是在染色方案在置换g下保持不变的方案的数目;不证; polya定理: polya...

    polya计数

    总结

    问题: 同构计数
    bunside定理: 在置换g下染色方案不变数的平均值;公式:\(\frac{1}{|G|}\sum_{g\in G}C(g)\), 其中\(C(g)\) 是在染色方案在置换g下保持不变的方案的数目;不证;
    polya定理:
    polya定理是对Burnside定理求\(C(g)\)的优化,注意到置换中处于同一循环的元素应该保持染色相同,而不同循环的元素则互不影响。下面简单解释一下置换中的循环。
    对于如下置换 g1
    1 2 3 4 5
    3 2 1 5 4
    那么由如下循环 (1,3)(2)(4,5),即要求(1,3)染色相同,(2)染色相同,(4,5) 染色相同。假设存在m中颜色,那么\(C(g1)=m^3\);由此可得polya公式:
    \(\frac{1}{|G|}\sum_{g\in G}{m^{c(g)}}\),其中\(c(g)\)表示置换g的循环次数(也称循环节的长度)

    参考:
    burnside定理可以看blog

    入门题poj2409

    分析

    考虑旋转和反转两种置换,旋转的循环节长度为\(gcd(n,i) i=0,1,2..n-1\);
    考虑翻转:分奇偶讨论对称轴即可

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    
    int c,s;
    int gcd(int a,int b){
        if(b==0) return a;
        return gcd(b,a%b);
    }
    
    ll polya(){
        ll ans = 0;
        for(int i=0;i<s;i++){
            ans+=(ll)pow(c,gcd(s,i));
        }
        if(s&1){//odd
            ans+=(ll)s*(ll)pow(c,s/2+1);
        }
        else{
            ans+=(ll)(s/2)*(ll)pow(c,s/2+1);
            ans+=(ll)(s/2)*(ll)pow(c,s/2);
        }
        return (ll)ans/(2*s);
    }
    
    int main(){
        while(cin>>c>>s){
            if(c==0&&s==0) break;
            if(c==0) return 0;
            if(s==0) return 1;
            cout<<polya()<<endl;
        }
        return 0;
    }

    转载于:https://www.cnblogs.com/fridayfang/p/11082886.html

    展开全文
  • Polya定理

    2019-09-24 18:02:54
    02.09 考试第一题是 Polya定理,洛谷上的模板 (P4980 【模板】Polya) 定理是求 n 点环染 n 种颜色的本质不同的方案数,而考试考的是 给定 n , m , 在 size 为 n 的环上染 m 种颜色的方案数 首先呢,这是到群论的题,...

    02.09 考试第一题是 Polya定理,洛谷上的模板 (P4980 【模板】Polya) 定理是求 n 点环染 n 种颜色的本质不同的方案数,而考试考的是 给定 n , m , 在 size 为 n 的环上染 m 种颜色的方案数

    首先呢,这是到群论的题,直接上 Polya 定理的公式

    \(\frac{1}{n} \sum_{i=1}^{n} { m^{xi} }\)
    其中 n 为置换数, m 为染色的种类数, xi 为每个置换的循环数
    这是公式

    关于这道题, 根据找规律每个置换的循环数是 __gcd(i , n) , 所以暴力是 O(n t) 的 (t 为多组数据)
    所以我们要优化,改为枚举 Gcd
    所以公式改为
    \(\frac{1}{n} \sum_{d|n} \phi(n/d) m^d\)
    看起来就是狄利克雷卷积,其实暴力就可以过了

    再就是根号n的求 phi 函数
    公式为
    \(\phi(n) = n \prod_{i = 1}^{k}(1-\frac{pi-1}{pi})\)
    我们根号n 的枚举 i , 每次都先得到的就是质因子 , 再把 n 的质因子从n中消去,剩下的就是更大的质因子了,类似于筛质数的操作

    代码:

    #include <bits/stdc++.h>
    #define ll long long 
    #define int ll 
    #define E 100007
    #define M 1000000007
    using namespace std ;
    ll read() {
        ll s = 0 , f = 1 ; char ch ; 
        while(!isdigit(ch = getchar())) (ch == '-') && (f = -1) ; 
        for(s = ch - '0' ; isdigit(ch = getchar()) ; s = s * 10 + ch - '0') ; 
        return s * f ; 
    }
    void putit(ll x) {
        if(x < 0) putchar('-') , x = -x ; 
        if(x > 9) putit(x / 10) ; 
        putchar(x % 10 + '0') ; 
    }
    ll ksm(ll d , ll z) {
        ll res = 1 ;
        while(z) { 
            if(z & 1) res = res * d % M ; 
            d = d * d % M ; 
            z >>= 1 ; 
        }
        return res ; 
    }   
    ll n , m ; 
    ll P(ll xx) { return ksm(m , xx) ; }
    ll phi(ll x) {
        ll sqr = sqrt(x) , rt = x ; 
        for(int i = 2 ; i <= sqr ; i ++) {
            if(x % i == 0) {
                rt = rt / i * (i-1) ; 
                while(x % i == 0) x /= i ; 
            }
        }
        if(x != 1) rt = rt / x * (x-1) ; 
        return rt ; 
    }
    signed main() {
        freopen("ak.in" , "r" , stdin) ; 
        freopen("ak.out", "w" ,stdout) ; 
        ll T = read() ; 
        while(T --) {
            n = read() , m = read() ; 
            ll rt = 0 , sqr = sqrt(n) ; 
            for(int i = 1 ; i <= sqr ; i ++) {
                if(n % i != 0) continue ; 
                ll d = i ; 
                (rt += phi(n/d) * P(d) % M) %= M ; 
                if(d * d == n) continue ; 
                d = n / i ; 
                (rt += phi(n/d) * P(d) % M) %= M ;          
            }
            (rt *= ksm(n , M-2)) %= M ; 
            putit(rt) , puts("") ; 
        }
        fclose(stdin) , fclose(stdout) ; 
        return 0 ; 
    }
    /*
    5
    5 3
    6 2
    8 4
    20 9
    30 11
    */
    /*
    51
    14
    8230
    872010021
    822671761
    */

    转载于:https://www.cnblogs.com/trouble-faker/p/10359340.html

    展开全文
  • Polya计数

    千次阅读 2016-01-24 18:18:15
    前言复习【BZOJ】1004,发现Burnside引理和Polya定理忘记了,就再回顾一遍。一篇很好的东西:Polya定理,Burnside引理 再来一个百度的:burnside引理 还有一个PPT:Burnside引理,Polya定理本文就是参考了上文,...
  • 纯Java中Polya-Gamma分布的高效采样器。 它还与其他发行版兼容。 例子 // use default sampler PolyaGammaDistribution pg1 = new PolyaGammaDistribution ( 2 , 4 ); double x = pg1 . sample(); double mean = ...
  • 组合polya定理

    2013-11-28 20:27:51
    关于组合数学很详细的ppt,描述了polya定理,清晰易懂
  • POLYA合集

    2014-06-12 19:24:44
    polya计数,费马小定理
  • polya 定理

    2017-09-12 18:57:13
    polya定理中循环节的理解:把相互变换的所有元素看成一组 , polya公式的次方项就是组数 一般对于手镯刚体变换模型只考虑旋转和翻转变换。 poj 2409 #include #include #include #include #include #include...
  • polya模板

    2019-06-24 10:08:31
    超好用的polya模板233 百用百ac。感谢ss大佬 n个珠子 m个颜色 n很大的时候才用的到phi,一般用前面的就够了。 #include&amp;amp;lt;iostream&amp;amp;gt; #include&amp;amp;lt;cstdio&amp;amp...
  • Polya问题

    2017-02-09 00:06:11
    Polya问题给定红色和蓝色给八个棋子涂色,求所有的涂色方案,其中某种方案可以通过旋转到另一种,则这两种方案视作一种。研一组合数学讲的波利亚定义,旋转轮换的内容。如果用代码解决,可以将八个棋子视作二进制的8...
  • Polya urn模型

    2020-12-07 22:32:18
    Polya urn模型 Polya urn是一种包含 k 种不同颜色的球的瓮,瓮中的每个球除了颜色外其他都一样。Polya urn模型过程是随机从瓮中抽取出一个球,观察球的颜色,然后把抽取出的球重新放入瓮中。接着,如果抽出来的球的...
  • polya置换

    2018-09-18 20:35:00
    POLYA定理的基本应用 题意:有n个珠子围成的环,有t种颜色可以染这些珠子;如果这个环可以旋转有几种办法;如果这个环可以旋转,且可以翻转,有几种办法; 参考博客 刘汝佳的分析: 等价类计数问题。一共有两...
  • Polya定理及其应用

    2013-12-22 11:26:30
    c++技术 Polya定理及其应用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,681
精华内容 2,272
关键字:

polya