Seeing vs. Counting: Complexity Twins Show Where Multimodal LLMs Fail on Diagrams
Organizations: Google
Abstract
When a multimodal LLM miscounts in a diagram, does it fail at seeing or at counting? Existing visual graph and puzzle benchmarks vary visual density and algorithmic hardness together, confounding the two. We pair counting questions about the same drawing that sit in different counting-complexity classes, such as its spanning trees (a determinant) and its simple paths (#P-complete), and use a transcription probe and a text-only control to separate reading from computing. We test Gemini, Gemma and Qwen3-VL models; for the Gemini models, the answer depends on how the model computes. In chain of thought, most of them read small drawings correctly and then fail at counting, at a rate set far more by the size of the answer than by its complexity class (for the primary model, the odds of an exact answer fall 2.38-fold per decade of the answer). Given code and an exact transcription, the primary model counts correctly even on 10x10 grids, and reading becomes the bottleneck: a single view misses horizontal edges, and a second reading of a rotated copy with crop checks reads 86/96 large grids exactly, against 57/96 when the upright reading is simply repeated.
Figures & tables
| Task | Input | Class | Algorithm / hardness |
|---|---|---|---|
| binary image | bit-quad formula [ 23 ] ; | ||
| binary image | Reingold [ 47 ] ; -hard [ 1 ] | ||
| grid graph | matrix-tree det. [ 30 ] | ||
| grid graph | Kasteleyn/FKT [ 28 , 55 ] ; planar bipartite det [ 10 ] | ||
| balanced digraph | BEST [ 61 , 49 ] | ||
| grid graph | -c | planar bip. bounded [ 26 , 58 ] |
| Model | Class | P✓C✓ | P✓C | P C✓ | P C | |
|---|---|---|---|---|---|---|
| 3.8 Flash (low) | 40 | 100 | 0 | 0 | 0 | |
| 40 | 100 | 0 | 0 | 0 | ||
| 148 | 61 | 30 | 0 | 9 | ||
| 164 | 47 | 43 | 0 | 10 | ||
| 3.8 Flash (high) | 19 | 100 | 0 | 0 | 0 | |
| 20 | 100 | 0 | 0 | 0 |
| 3.8 Flash (low) | 3.8 Flash (high) | 3.6 Flash (high) | 3.1 Pro (high) | Gemma 31B (off) | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Twin pair (A vs. B) | acc | acc | acc | acc | acc | |||||
| vs. | 38/42 | 4/7 | 90/90 | 0/0 | 51/51 | 3/3 | 50/60 | 1/3 | 8/3 | 4/1 |
| vs. | 38/39 | 4/5 | 86/81 | 1/0 | 51/49 | 4/3 | 53/58 | 1/2 | 8/21 | 1/10 |
| vs. | 70/44 | 13/0 † | 93/86 | 1/0 | 72/48 | 6/0 | 80/53 | 4/0 | 20/0 | 10/0 † |
| vs. | 100/100 | 0/0 | 100/100 | 0/0 | 100/100 | 0/0 | 100/100 | 0/0 | 90/95 | 1/3 |
| vs. | 97/72 | 8/0 | 100/91 | 1/0 | 100/88 | 2/0 | n/a | n/a | 34/41 | 1/3 |
| Model | thinking | tokens | |||||
|---|---|---|---|---|---|---|---|
| 3.6 Flash | minimal | 100 | 95 | 29 | 26 | 1.8k | |
| low | 100 | 100 | 47 | 41 | 7.0k | ||
| high | 100 | 100 | 68 | 57 | 25.4k | ||
| 3.8 Flash | low | 100 | 100 | 69 | 67 | 5.7k | |
| medium | 100 | 100 | 86 | 78 | 13.2k | ||
| high | 100 | 100 | 92 | 83 | 27.4k | ∗ |
| Condition | acc | exec | t/o | libs | alg. | DP | tokens | |
|---|---|---|---|---|---|---|---|---|
| Visual Code | 392 | 93 | 100 | 0 | 6 | 62 | 27 | 1.7k |
| Text Code | 392 | 96 | 98 | 0 | 3 | 64 | 32 | 0.9k |
| Routing prompt (control) | 392 | 91 | 100 | 0 | 0 | 72 | 41 | 1.5k |
| Set | Method | exact | solved |
| 24 grids | chain of thought (all configurations) | 0/60 | |
| Code, one shot | 6/60 | ||
| Perceive+Code or CAR , one shot | 14/60 | ||
| exact text: Text Code / Text CAR | 57/60 / 54/60 | ||
| one view / Zoom- crops ( , ) | 13/24 / 1/24, 7/24 | ||
| two-view ( ): Text Code / Text CAR | 22/24 | 49/60 / 43/60 |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Model | Family / size | mean F1 | exact (%) | |
|---|---|---|---|---|
| Gemini 3 Flash (low) | grid 3x3 | 15 | 1.000 | 100 |
| grid 3x4 | 20 | 1.000 | 100 | |
| grid 4x4 | 20 | 0.996 | 80 | |
| grid 4x5 | 20 | 0.996 | 80 | |
| grid 5x5 | 15 | 0.999 | 93 | |
| grid 5x6 | 20 | 0.986 | 15 |
| Model | Condition | Task | v2 acc (k/n) | v3 seeds acc (k/n) | Fisher | pooled acc [95% CI] |
| Gemini 3.8 Flash (low) | CAR | 95 (38/40) | 95 (57/60) | 1.00 | 95 [89,98] (100) | |
| #CC | 100 (40/40) | 98 (59/60) | 1.00 | 99 [95,100] (100) | ||
| #ST | 86 (57/66) | 91 (82/90) | 0.44 | 89 [83,93] (156) | ||
| #PM | 76 (38/50) | 85 (64/75) | 0.24 | 82 [74,87] (125) | ||
| #EC → | 100 (32/32) | 100 (32/32) | 1.00 | 100 [94,100] (64) | ||
| #M | 86 (57/66) | 91 (82/90) | 0.44 | 89 [83,93] (156) |
| Set | Configuration | instance | task | true digits | returned digits | finish |
| none |